【发布时间】:2018-11-10 22:20:53
【问题描述】:
以下代码在编译和运行时会出现分段错误。这是为什么呢?
#include <stdio.h>
#include <limits.h>
int main(void)
{
int fat_array[INT_MAX];
return 0;
}
【问题讨论】:
-
您的系统当时没有足够的内存来容纳这么大的 local 数组。它在运行时尝试并失败了。
-
没有.com的stackoverflow
-
int fat_array[INT_MAX]需要 8 GiB 的堆栈空间;类 Unix 系统很慷慨,通常会给你 8 MiB 的堆栈空间; Windows 更保守,通常只给你 1 MiB。无论哪种方式,它的空间都比需要的少得多。在文件范围(main()之外)分配数组,或使用动态内存分配(malloc()等)。
标签: c arrays segmentation-fault