C语言 声明大数组后的 Seg 错误



我的问题如下:

此代码返回一个 seg 错误(核心转储):

#include <stdio.h>
int main(void) {
  double array[128][128][128];
  printf("done");
  return 1;
}

虽然此代码正常:

#include <stdio.h>
double array[128][128][128];
int main(void) {
  printf("done");
  return 1;
}

当然是内存问题,因为如果我在 main 函数中放入声明:

float array[127][128][128];

代码运行良好。另一方面,如果我使用"malloc"在主函数中分配多维数据集,代码也可以很好地工作。我不明白其中的原因。有一个简单的解释吗?

谢谢

是的,您是对的,这是因为当您在main内放置双array[128][128][128];时,它会在堆栈上分配更多内存字节,这是您的操作系统不支持的。

但是,当它在main外部分配时,它会从应用程序池外部获取内存,因此您看不到任何错误。

相关内容

  • 没有找到相关文章

最新更新