内存四区模型
内存可以先粗略的分为四个区,分别是代码区,数据区,栈区和堆区。其中,数据区可以分为全局区/静态区、常量区。
数据区内容的生命周期从程序开始到程序终止;栈区的内容从函数左括号开始,到右括号为止,函数结束后,内存自动释放回收;堆区的内容由程序员自己开辟,手动释放。
代码区: 程序指令 |
数据区:(全局区/静态区/常量区) 初始化的数据: 全局变量,静态全局变量,静态局部变量 未初始化的数据: 未初始化的全局变量,静态全局变量,静态局部变量,默认值均为0 常量 字符串常量 |
栈区: 变量、数组 结构体、指针 枚举、函数形参 |
堆区:大型数据,程序员自己开辟内存存放的数据
|
栈区向下生长,数值逐渐减小;堆区向上生长,数值逐渐增大。死循环不会使程序崩掉(占满内存),但是会占满CPU,递归会导致程序崩溃,导致栈溢出。