我这里有一些代码,其中有一个“培根”对象数组。我可以编译并运行它,并将对象添加到数组中,但是当我使数组大小超过一百万时,我运行它,并说“bacon.exe已停止工作”,必须关闭它。我认为这可能是内存泄漏,但是我仍在学习中。我正在使用netbeans ide,并且尝试在编译时分配更多的内存,但是我不知道该怎么做。注意:这不是因为我的整个计算机内存不足,是因为运行该程序后仍有2GB可用空间。这是我的代码:

#include <iostream>
#include "Bacon.h"
using namespace std;

int main() {
    const int objs = 1000000;
    Bacon *bacs[objs];
    for(int i = 0;i < objs;i++){
        bacs[i] = new Bacon(2,3);
    }
        for(int i = 0;i < objs;i++){
        bacs[i]->print();
    }
    cin.ignore();
    return 0;
}

最佳答案

您的计算机有足够的内存,但是只能在堆栈中分配这么多的内存。尝试在堆上分配它:

Bacon **bacs = new Bacon*[objs];

然后:
delete[] bacs;

09-27 20:03