分配内存时栈和堆在操作系统的底层原理
2 分钟阅读
•
244 字
+
139 词
栈是用于管理函数调用,局部变量等的高效的内存区域,由操作系统自动管理
而堆是用于动态分配的内存区域,由程序员手动管理(或者垃圾回收)
栈在操作系统底层实现:
- 线程创建的时候,操作系统为其创建栈空间
- 栈的使用:只需要移动栈指针
- 硬件支持:寄存器 x86 rsp rbp
-
操作系统管理:
- 函数调用时,先将参数压栈
- 执行call指令,将返回地址(返回上一级函数的下一条指令)压栈
- 创建栈帧,保存旧的rbp,设置新的rbp
- 为局部变量分配空间
- 恢复之前的rbp和rsp,ret指令弹出返回地址