我在这里有一些代码,其中有一组"培根"对象.我可以编译并运行它并将对象添加到数组中,但是当我使数组大小超过一百万时,我运行它并且它说'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;
}
Run Code Online (Sandbox Code Playgroud)
您的计算机有足够的内存,但只有很多内存可以在堆栈上分配.尝试在堆上分配它:
Bacon **bacs = new Bacon*[objs];
Run Code Online (Sandbox Code Playgroud)
然后:
delete[] bacs;
Run Code Online (Sandbox Code Playgroud)