其实就是数据存储区,
在堆里(heap)是动态生成的
要自己手动释放。所以你看到new
delete
c++
malloc
free
c语言
栈区(stack)这里是在函数里面定义的变量。他们被放在系统的栈区
因为堆栈是要释放的,系统释放在你对函数调用完的返回的时候。如果你在函数中new了对象的话,那要记得delete掉他们。这些是要系统资源的,但是堆栈里会有编译器实现自动释放。然后在返回到我们调用这个函数的返回点下一个操作。
堆栈有着一些系统约定的要求。那些寄存器是有调用者保存,那些是被调用者保存最后返回都是有说法的,常见的ebp
esp,被调用的函数保存,
如果进栈不出,程序将崩溃。因为你的返回点就错了。也就是你的eip出错了哦。。指令指针寄存器
有句话叫堆栈平衡
记得就好。
压栈
push
xxxx
出栈
pop
xxxx
或
add
esp
,0x04;
作用就是要让函数能够返回掉调用函数点的下一条指令。。。
我想rent
语句就是jmp
xxxxx...
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。