我的问题如下:
此代码返回一个 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
外部分配时,它会从应用程序池外部获取内存,因此您看不到任何错误。