我有一个类,需要大量的内存。

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::,如果您使用的是最新的编译器)。

07-28 08:44