函数栈帧的创建与销毁
以c语言代码为例,浅谈函数栈帧的创建与销毁。
int Add(int a, int b)
{
int c = a + b;
return c;
}
int main()
{
int a = 0;
int b = 0;
int ret = Add(a, b);
system("pause");
return 0;
}
要知道每次调用函数,都会进行函数栈帧的创建与销毁。这次的测试是在vs2013中。我们先来看一个简易的图了解一下
main函数其实也时被其他函数调用的,那么在程序执行时,调用main函数,就要为main函数创建栈帧。我们进行这个代码的调试来观察。
c的值保存在eax中返回main函数
函数结束后对应的销毁其栈帧。