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

标签 c arrays segmentation-fault

<分区>

以下代码在编译和运行时会出现段错误。这是为什么?

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

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

  return 0;
}

最佳答案

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

关于c - 为什么声明一个长度为 INT_MAX 的 int 数组会产生段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53244002/

相关文章:

c# - 检查字符串的所有元素

arrays - Array.isDefinedAt 用于 scala 中的 n 维数组

c - 释放为 C 中的字符串分配的内存

c++ - 使用 Arduino 信号作为 PC 的输入?

c - 黑客如何利用数组或指针

python - 使用 pygame.midi 播放 midi 音符时出现段错误

c - 计算循环期间出现段错误

iOS Mach-O – 使 __TEXT 段暂时可写

c - 根据结构体内部的元素对结构体指针数组进行排序

c - 分段故障。运行时错误