【问题标题】:Why int array[1000][1000] is memory issue in C program? [duplicate]为什么 int array[1000][1000] 是 C 程序中的内存问题? [复制]
【发布时间】:2014-11-06 09:19:58
【问题描述】:

为什么int array[1000][1000]main方法中声明而不是全局声明时是C程序中的内存问题?

【问题讨论】:

  • 在大多数系统上,这通常需要 4 MB 的堆栈空间,因此在某些情况下它会失败,因为堆栈大小可以从几 kB 到几 MB。

标签: c


【解决方案1】:

堆栈的大小有限,因此只能容纳有限数量的信息。如果程序试图将过多的信息放入堆栈,则会导致堆栈溢出。当堆栈中的所有内存都已分配时,就会发生堆栈溢出。

程序

int main()
{
    int array[1000][1000];
    return 0;
}  

尝试在堆栈上分配一个巨大的数组。
因为堆栈不足以处理这个数组,所以数组分配溢出到程序不允许使用的内存部分。因此,程序崩溃。


延伸阅读:The stack and the heap.

【讨论】:

  • 哦,是的,谢谢。- Paul R 和黑客
猜你喜欢
  • 2017-03-30
  • 2011-10-05
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 2011-06-29
相关资源
最近更新 更多