c语言笔记 内存管理之栈内存
物理内存和虚拟内存
在c语言的程序需要内存资源,用来存放变量,常量,函数代码等,不同的内容存放在不同的内存区域,不同的内存区域有着不同的特征。
c语言的每一个进程都有着一片结构相同的
虚拟内存,虚拟内存是
物理内存映射出来的,c程序存储在虚拟内存中在由虚拟内存映射到物理内存,这才真正的使用到物理内存。c程序用到虚拟内存,这方便了内核系统管理。

每一块虚拟内存存在物理内存的不同区域,每一块都是独立的,都有独立的地址。
程序与虚拟内存的关系图解:
运行时栈
1.环境变量 2.命令行参数 3.局部变量(形参)
一个程序在运行的时候,栈内存是不断变化的,
- 每当一个函数被调用栈会往下增长一段距离,函数调用完系统回收内存,栈往上缩短一段距离。
- 注意:栈内存的分配和释放,都是由系统规定的,我们无法干预。
- 空间有限,尤其在嵌入式环境下。因此不可以用来存储尺寸太大的变量。