函数是我们C语言中经常接触到的一个内容。我们的编程和代码都会有函数。那么函数的调用有是怎样的一个过程呢?这个过程在内存中又是如何来实现呢?这些问题的答案就是函数的调用,这个调用的过程中要为函数开辟栈空间,这块空间就是函数栈帧。
我在学习了函数的调用和栈帧之后,深感这一知识的重要和理解的困难,所以写了这篇关于函数栈帧的博客。其中有理解的不清楚或不对的地方也请大家指正。
以下是我这次理解函数栈帧时所用的代码,是一个十分简单的ADD加法函数。
(注意,我用的编程工具是Visual Studio 2013)
//ADD函数的栈帧
#include <stdio.h>
int ADD(int x, int y)
{
int z = 0;
z = x + y;
return z;
}
int main()
{
int a = 2;
int b = 3;
int ret;
ret = ADD(a, b);
printf("%d\n", ret);
return 0;
}
将以上代码进行调试,“调试--窗口--反汇编”进入反汇编窗口,则界面如下