今天看啥  ›  专栏  ›  CSDN企业招聘

内存栈区上保存的是什么?

CSDN企业招聘  · 公众号  ·  · 2024-07-25 09:00
    

文章预览

作者 | 码农的荒岛求生 来源 | 码农的荒岛求生 假设有三个函数,函数1调用函数2,函数2调用函数3。 函数在运行时同样有很多与之相关的信息需要记录下来,因此每个函数被执行时都会有属于自己的一块内存,这三块内存被称之为栈帧: 这些栈帧组成了栈区。 这些栈帧会因为函数的调用以及返回形成一个先进后出的结构,也因此这些栈区组成的内存区域被称之为栈区。 那么我们怎么知道栈帧的内存范围呢?这通过CPU中esp和ebp这两个寄存器来界定的。 ebp被称之为栈帧寄存器,指向栈底部,esp被称之为栈寄存器,指向栈顶。 其中栈寄存器esp是可以上下移动的,esp下移就是分配更多栈空间,esp上移就是释放栈空间。 假设此时我们将进行函数调用,函数调用的第一件事就是把返回地址保存在栈上: 这样当被调函数运行完毕后CPU就知道该从哪里继续执 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览