知识卡片

栈帧保存现场

普通读书笔记卡 · 1475

内容

函数调用会建立栈帧,保存参数、返回值、局部变量和返回地址等执行现场。理解栈帧后,panic 栈、汇编输出和性能开销都不再是黑盒。

参考来源

- 位置:《Go语言底层原理剖析》第9章《函数与栈》9.3节《函数栈》 - 结论依据:原文定义"每个函数在执行过程中都使用一块栈内存来保存返回地址、局部变量、函数参数等,我们将这一块区域称为函数的栈帧(stack frame)",并说明被调用函数不能覆盖调用函数的栈帧,因此调用链越深消耗的栈空间越大,因此可以推出"函数调用建立栈帧、保存执行现场"的结论。 - 原始内容:每个函数在执行过程中都使用一块栈内存来保存返回地址、局部变量、函数参数等,我们将这一块区域称为函数的栈帧(stack frame)。当发生函数调用时,因为调用函数没有执行完毕,其栈内存中保存的数据还有用,所以被调用函数不能覆盖调用函数的栈帧,只能把被调用函数的栈帧压栈,等被调用函数执行完毕后再让栈帧出栈。