gpt4 book ai didi

C++:XCode EXC_BAD_ACCESS 问题

转载 作者:太空狗 更新时间:2023-10-29 20:45:36 24 4
gpt4 key购买 nike

我不熟悉在 Xcode 中编写 C++ 作为我的框架,所以我想问一个我认为仅与内存管理

有关的问题

我想要实现的是我尝试创建一个矩阵大小 10000 x 10000 但是即使我做了正确的编码(至少我是这么认为的)我还是无法得到它可以工作,只是指出 EXC_BAD_ACCESS 错误。

您可以在下面找到我的代码。这是一个面向 XCode 的错误还是我犯了一个明显的编码错误?

#include <iostream>
using namespace std;

int main(int argc, const char * argv[])
{

// insert code here...
int matrix[10000][10000];
for(int i=0;i<10000;i++)
for(int j=0;j<10000;j++)
matrix[i][j]=24;
cout<<"Done"<<endl;
return 0;
}

最佳答案

如果 Jesse Good 发表评论“int matrix[10000][10000]; 在我看来像是堆栈溢出。”作为回答,我将删除它。

您应该在堆上而不是堆栈上创建此大小的分配。

这是 segmentation :

400,000,000 bytes = 10000*10000*sizeof(int)

通过在堆上创建分配来克服此问题的一种常见方法是:

#include <iostream>
#include <vector>

int main(int argc, const char* argv[]) {
std::vector<std::vector<int> > matrix(10000, std::vector<int>(10000, 24));
cout<<"Done"<<endl;
return 0;
}

堆栈大小由操作系统、硬件和其他因素决定。您可以使用的内存可能少于 1 MB,但通常不会超过几 MB。因此,应避免大堆栈分配。

关于C++:XCode EXC_BAD_ACCESS 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10404807/

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