我创建一个有点太大的数组时出现分段错误

时间:2014-10-19 09:35:12

标签: c++ c arrays segmentation-fault

我的代码的某些部分有一个C ++对象,如下所示:

class Object

{
public : 
float a, b, c;
}

当我创建这样的二维数组时,它可以正常工作:

Object myArray [500][500];

当我这样做时,我得到了分段错误:

Object myArray [1000][1000];

导致分段错误的原因是什么,我该如何摆脱它?感谢。

3 个答案:

答案 0 :(得分:2)

要创建一个巨大的数组,您需要将其设置为全局数组。局部变量具有大小限制。另一种解决方案是动态分配数组。

答案 1 :(得分:2)

Stack的大小有限,在现代机器上通常为1到10 MB。您的数组至少需要16 MB。

最好的情况是在堆上分配数组。

答案 2 :(得分:1)

您很可能已超出堆栈大小,因此您需要使用动态数组(因此堆)或在编译器设置中增加堆栈大小。