函数运行时在内存中是什么样子?
void func(int a) {
if (a > 100000000) return;
int arr[100] = {0};
func(a + 1);
}
从进程、线程到函数调用
函数执行的活动轨迹:栈
A Box
控制转移
我从哪里来 (返回)
要到去哪里 (跳转)
函数A对于的机器指令执行到了哪里 (我从哪里来,返回)
函数B第一条机器指令所在的地址 (要到哪里去,跳转)
call 0x400540
传递参数与获取返回值
局部变量
Big Picture
void func(int a) {
if (a > 100000000) return;
int arr[100] = {0};
func(a + 1);
}
void main(){
func(0);
}
不要创建过大的局部变量
函数栈帧,也就是调用层次不能太多
总结
·················· END ··················
关注后回复「1024」,获取海量学习资源
评论