gpt4 book ai didi

C++ 循环内存错误?

转载 作者:搜寻专家 更新时间:2023-10-30 23:59:28 27 4
gpt4 key购买 nike

我这里有一些代码,其中有一个“培根”对象数组。我可以编译并运行它并将对象添加到数组中,但是当我使数组大小超过一百万时,我运行它并显示“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;

关于C++ 循环内存错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16379205/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com