为什么声明一个长度为INT_MAX的int数组会产生分段错误?

时间:2018-11-10 22:20:53

标签: c arrays segmentation-fault

以下代码在编译和运行时给我一个分段错误。为什么会这样?

#include <stdio.h>
#include <limits.h>

int main(void)
{
  int fat_array[INT_MAX];

  return 0;
}

1 个答案:

答案 0 :(得分:2)

您要请求的是分配约2,147,483,647个整数空间。每个整数通常为四个字节,因此8,589,934,588个字节即8 GB的内存。这很可能超出单个进程被允许保留的允许的内存量,这是有充分理由的,因此会出现错误。