当我们在运行下面一段代码时,会抛出stack overflow的异常:
#include <stdio.h>
void main(){
int i[1024 * 1024 * 10];
getchar();
}
这个错误直译过来就是栈溢出,这里面就涉及到C语言的内存区域的分配问题。
C语言内存区域划分
1、栈区(stack) 先进后出的内存结构,所有的自动变量、函数形参都存储在栈中
每个线程都有自己的栈帧
栈内存尺寸固定,超过则引起栈溢出,如上面的代码:
自动分配(申请方式如:int i[10];),变量离开作用域后自动释放
2、堆区 (heap) 和栈一样&#x