前言:
程序 = 算法 + 数据结构
算法 = 内存正文区(.text)的执行逻辑
数据结构 = 堆 + 栈 + 其他数据存储区
栈:
栈是进程虚拟内存模型中的一块连续内存区域,不同的操作系统对于虚拟内存的划分策略存在一定的差异,但是不论是什么操作系统都会流出一大块内存区用作栈空间(大多数情况下是堆和栈共享)。
x86架构下,栈是向着低地址蔓延的,堆是向着高地址蔓延的。每一次函数调用,寄存器组都会重新被赋予一套值,这套值表明了当前函数的栈帧范围,当函数执行完毕时,寄存器组会被重新赋值以回退到父函数的函数调用帧中。
函数自己的栈帧只存放自己的局部变量,函数的入参存放在其父函数的栈帧中,因为他们是父函数的局部变量。