9.1 C++内存分区模型-程序运行前
C++将内存大致分为4个区域:
代码区 | 存放程序的二进制代码 |
全局区 | 存放全局变量、静态变量、常量,程序结束后由操作系统释放 |
栈区 | 由编译器分配释放,存放局部变量等 |
堆区 | 由程序员管理释放,如果程序员不释放,程序结束后自动释放 |
程序编译后,生成了exe可执行程序,在程序未运行之前,有两个区,分别是代码区和全局区。
9.1.1 代码区
代码区存放了exe的二进制指令,有两个特性:
- 共享。对于一个exe,只存有一份指令,每次运行时都执行这部分指令。
- 只读。防止程序意外的修改了指令,导致程序无法实现预期功能。
9.1.2 全局区
全局区存放:全局变量、静态变量、全局常量、字符串常量
局部常量不存在全局区。
这里的常量就是const修饰的变量。
静态就是static修饰的变量。