未运行时期和运行时期的内存分区是不一样的。
未运行时期
未运行时期分为代码区和全局区。全局区又可划分为数据区和未初始化数据区。
代码区存放的是程序经过编译后的机器指令。
全局区(程序数据)
数据区存放的是初始化的全局变量和静态变量,还有常量。
未初始化数据区存放的是未初始化的全局变量和静态变量。
为什么要分为代码区和全局区呢?
因为代码区可以共享,该程序运行起来代码区是不变的,但是数据区需要改变。
运行时期
代码区和全局区在未运行时已经确定,运行期间就会增加两个区:堆区和栈区。
栈区由编译器管理,存放临时变量和局部变量。
堆区由程序员管理,存放开辟的动态内存空间。