我想声明一个数组:
整数a [256] [256] [256]
然后程序挂起。 (我已经注释掉所有其他代码...)
当我尝试int a [256] [256]时,它运行正常。
我正在使用MingW C++编译器Eclipse CDT。
我的代码是:
int main(){
int a [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/