C++中的多维数组挂起

Lil*_*ily 2 c++ eclipse-cdt multidimensional-array

我想声明一个数组:int a [256] [256] [256]并且程序挂起.(我已经注释掉了所有其他代码...)当我尝试[256] [256]时,它运行正常.

我使用的是MingW C++编译器,Eclipse CDT.

我的代码是:int main(){int a [256] [256] [256]; 返回0; }

欢迎任何评论.

Jon*_*ehl 10

如果您的数组是函数的本地数组,则可能发生这种情况 在这种情况下,您需要一个足以容纳2 ^ 24个整数(2 ^ 26个字节或64 MB)的堆栈大小.

如果你使数组成为全局数组,它应该可行.我不确定如何在Windows中修改堆栈大小; 在Linux中你使用"ulimit -s 10000"(单位是KB).

如果您有充分的理由不使用全局(并发或递归),则可以使用malloc/free.重要的是要么增加堆栈(如果你使用线程不是一个好主意),要么获取堆上的数据(malloc/free)或静态数据段(全局).

理想情况下,您将获得程序终止(核心转储)而不是挂起.我在cygwin做.