我有一个类,需要大量的内存。
class BigClass {
public:
BigClass() {
bf1[96000000-1] = 1;
}
double bf1[96000000];
};
我只能通过“新建”堆内存中的对象来初始化类。
BigClass *c = new BigClass();
assert( c->bf1[96000000-1] == 1 );
delete c;
如果我没有“new”就启动它。我会在运行时遇到段错误。
BigClass c; // SIGSEGV!
如何确定内存限制?还是我最好总是使用“new”?
最佳答案
堆栈的大小取决于编译器选项。请参阅编译器文档以更改可执行文件的堆栈大小。
无论如何,对于大对象,更喜欢使用new或更好的:智能指针,如shared_pointer(来自boost或来自std::tr1或std::,如果您使用的是最新的编译器)。