为什么int array[1000][1000]
在用main
方法而不是全局声明声明时在C程序中是内存问题?
答案 0 :(得分:7)
堆栈的大小有限,因此只能容纳有限的信息。如果程序试图在堆栈上放置太多信息,将导致堆栈溢出。堆栈中的所有内存都已分配时发生堆栈溢出。
该计划
int main()
{
int array[1000][1000];
return 0;
}
尝试在堆栈上分配一个巨大的数组 因为堆栈不足以处理此数组,所以数组分配溢出到不允许程序使用的内存部分。因此,程序崩溃了。
进一步阅读:The stack and the heap。