我的问题如下:
此代码返回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;
}
当然是内存问题,因为如果我把主要功能放在声明中:
float array[127][128][128];
代码效果很好。另一方面,如果我使用“malloc”在主函数内部分配多维数据集,代码也可以正常工作。 我无法理解其原因。有一个简单的解释?
由于
答案 0 :(得分:1)
是的,你是对的,这是因为当你在array[128][128][128];
内放置双main
时,它会在你的操作系统不支持的堆栈上分配更多的内存字节。
但是当它在main
之外分配时,它会从应用程序池外部获取内存,因此您不会看到任何错误。