c++ - C++中的多维数组挂起

标签 c++ multidimensional-array eclipse-cdt

我想声明一个数组: 整数 [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/

相关文章:

c - Printf w/Eclipse CDT 问题

gcc - Windows 下 Eclipse 的 GNU ARM 插件 - OpenOCD 未开始调试

c++ - 如何使用 QPushButton 缩放图标

ios - 如何在 Swift 中过滤二维数组?

c++ - 具有 win32 低级消息 api 的 CAdES 签名

c - 使用多维数组时,使用指向该数组的指针与使用实际数组名称作为指针有什么区别

java - 如何将 txt 文件读入二维数组 Java

c++ - Eclipse CDT 中的 C++ 类 JUnit 测试框架

c++ - XE4 中的 "ADOM XML v4"

c++ - 按顺序将树转换为数组