我的代码的某些部分有一个C ++对象,如下所示:
class Object
{
public :
float a, b, c;
}
当我创建这样的二维数组时,它可以正常工作:
Object myArray [500][500];
当我这样做时,我得到了分段错误:
Object myArray [1000][1000];
导致分段错误的原因是什么,我该如何摆脱它?感谢。
答案 0 :(得分:2)
要创建一个巨大的数组,您需要将其设置为全局数组。局部变量具有大小限制。另一种解决方案是动态分配数组。
答案 1 :(得分:2)
Stack的大小有限,在现代机器上通常为1到10 MB。您的数组至少需要16 MB。
最好的情况是在堆上分配数组。
答案 2 :(得分:1)
您很可能已超出堆栈大小,因此您需要使用动态数组(因此堆)或在编译器设置中增加堆栈大小。