【发布时间】:2014-11-06 09:19:58
【问题描述】:
为什么int array[1000][1000]在main方法中声明而不是全局声明时是C程序中的内存问题?
【问题讨论】:
-
在大多数系统上,这通常需要 4 MB 的堆栈空间,因此在某些情况下它会失败,因为堆栈大小可以从几 kB 到几 MB。
标签: c
为什么int array[1000][1000]在main方法中声明而不是全局声明时是C程序中的内存问题?
【问题讨论】:
标签: c
堆栈的大小有限,因此只能容纳有限数量的信息。如果程序试图将过多的信息放入堆栈,则会导致堆栈溢出。当堆栈中的所有内存都已分配时,就会发生堆栈溢出。
程序
int main()
{
int array[1000][1000];
return 0;
}
尝试在堆栈上分配一个巨大的数组。
因为堆栈不足以处理这个数组,所以数组分配溢出到程序不允许使用的内存部分。因此,程序崩溃。
延伸阅读:The stack and the heap.
【讨论】: