堆栈(上)
堆栈
百度百科曰:
大概就是:
在调用程序时,电脑自动开辟的用来放数据的内存空间,程序运行完再自动释放。
栈顶和栈底
图片源自
在内存管理中,对于堆来讲,生长方向是向上的,向着内存地址增加的方向生长;对于栈来讲,生长方向是向下的,向着内存地址减小的方向增长。
ESP:其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。
EBP:其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。
堆栈平衡
堆栈平衡:执行程序之前和执行完程序之后的堆栈是完全一样的,否则程序会出错的。
1)如果要返回父程序,则当我们在堆栈中进行堆栈的操作的时候,一定要保证在RET这条指令之前,ESP指向的是我们压入栈中的地址。
2)如果要通过堆栈传递参数了,那么在函数执行完毕后,要平衡参数导致的堆栈变化。
20207.25 第一周