1、栈
后入先出的一种数据结构;
从高地址向低地址生长;
对栈的删除和修改不会改变栈底指针;
每个函数的每次调用,都有它自己独立的一个栈帧,这个栈帧中维持着所需要的各种信息。因此栈作用就是用来保持栈帧的活动记录(即函数调用)
对于一个栈来说,寄存器ebp和esp分别指向指向系统栈最上面一个栈帧的底部和栈帧顶部(实际上也是栈的顶部)。
2、栈帧
栈帧表示程序的函数调用记录,而栈帧又是记录在栈上面,很明显栈上保持了N个栈帧的实体,那就可以说栈帧将栈分割成了N个记录块,但是这些记录块大小不是固定的,因为栈帧不仅保存诸如:函数入参、出参、返回地址和上一个栈帧的栈底指针等信息,还保存了函数内部的自动变量(甚至可以是动态分配内存,alloca函数就可以实现,但在某些系统中不行),因此,不是所有的栈帧的大小都相同。
栈帧相对于某个函数而言,就是该函数在栈中所占去的空间。