先来看一段超级简单的代码
# include<stdio.h>
int myadd(int x,int y)
{
int z=x+y;
return z;
}
int main()
{
int a=0XAAAAAAAA;
int b=0xBBBBBBBB;
int c=myadd(a,b);
printf("main:you would run here!\n");
printf("res : %d\n",c);
getchar();
return 0;
}
在main函数中创建了两个临时变量a,b然后调用myadd函数进行两数相加,在返回他们的和.从字面代码来说,里面的逻辑懂编程的人肯定都能理解.
但是在内存中
main函数和myadd函数是什么样子呢?
main函数是通过什么方式调用myadd函数的呢?
main里的临时变量又是如何被myadd函数使用的呢?
myadd的返回值又是如何传递给main函数的呢?
让我们带着疑问,走进今天的瞎逼课堂.
何为栈帧
要想清楚的了解上述问题,首先我们得认识一个结构,叫栈帧(StackFrame).我来给大家画一个栈帧长什么样.