首先我们先要搞懂程序的地址空间是怎样的。
堆区和栈区相对生长,而我们的变量是存在栈区,接下来我们就要对程序运行时的栈区进行讨论。
用以下程序为例:
#include<stdio.h>
#include<windows.h>
int add(int a,int b)
{
int z=a+b;
return z;
}
int main()
{
int a=1;
int b=1;
int z=add(a,b);
printf("%d\n",z);
system("pause");
return 0;
}
我们通过转到汇编语言来更好的观察程序的每一步。
每进入一个函数我们就需要给这个函数开辟一个空间,而这个空间我们叫栈帧。
从地址00401060到00401076,这一段是给开辟的空间先进行初始化。