简单的多维C风格阵列给出了分段错误:11

时间:2013-07-08 04:30:12

标签: c++

const int L=10;
std::complex<double> c_array[L][L][L][L][L][L]    // 6 dimensions

所需空间:2 * 8 * 10 ^ 6字节

它不应该耗尽所有内存,对吗?

1 个答案:

答案 0 :(得分:8)

每个进程都有一个堆栈大小限制。因此,如果您确实想在本地(在堆栈中)创建此数组,唯一的解决方案是增加程序的堆栈大小限制。如何更改堆栈大小限制取决于您的操作系统。

替代方法是在堆中创建此数组。为此,您必须使用“new”关键字,如下所示。

std::complex<double> *c_array = new std::complex<double>[L][L][L][L][L][L];