我想声明一个数组: 整数 [256][256][256] 然后程序挂了。 (我已经注释掉所有其他代码...) 当我尝试 int a[256][256] 时,它运行正常。
我正在使用 MingW C++ 编译器 Eclipse CDT。
我的代码是: 内部主要(){ int [256][256][256]; 返回 0;
欢迎任何评论。
最佳答案
如果您的数组是函数的局部数组,则可能会发生这种情况。在这种情况下,您需要一个足以容纳 2^24 个整数(2^26 字节或 64 MB)的堆栈大小。
如果您将数组设为全局数组,它应该可以工作。我不确定如何在 Windows 中修改堆栈大小;在 Linux 中,您将使用“ulimit -s 10000”(单位为 KB)。
如果你有充分的理由不使用全局(并发或递归),你可以使用 malloc/free。重要的是要么增加你的堆栈(如果你使用线程不是一个好主意),要么获取堆上的数据(malloc/free)或静态数据段(全局)。
理想情况下,您会终止程序(核心转储)而不是挂起。我在 cygwin 中做。
关于c++ - C++中的多维数组挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1263292/