C语言的内存模型分为5个区: 堆区,栈区,静态区,常量区,代码区 。
1、栈区
存放函数的参数值,局部变量等。 由编译器自动分配和释放。通常在函数执行完了就释放了。其操作方式类似于数据结构中的栈。栈内存分配运算内置于cpu 的指令集,效率高,但是内存量有限。
(栈是先进后出, 队列先进先出)
2、堆区
就是通过new、 malloc 、 relloc 分配的内存块,编译器不会负责它们的释放工作,需要用程序去释放。分配方式 类似数据结构中的链表。“内存泄漏”通常说的就是堆区。
3、静态区
全局变量 和静态变量在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域,程序结束后,由系统释放。
4、常量区
常量存储在这里不允许修改。
5、代码区
顾名思义,存放代码的。