-
代码区
加载的是可执行文件代码区,所有的可执行代码区都加载到代码区,这块内存在运行期间不能修改。
-
未初始化数据区(BSS)
加载的是可执行BSS段,位置可以分开亦可以紧靠数据段,存储数据段的数据(全局未初始化,静态未初始化数据)的生存周期为整个程序运行过程。
-
全局初始化数据区/静态数据区(data segmentation)
加载的是可执行文件数据段,存储于数据段(全局初始化、静态初始化数据、文字常量)的数据的生存周期为整个程序运行过程。
-
栈区(stack)
栈先进后出的内存结构,由编译器自动分配内存,存放函数的参数值、返回值、局部变量等。在程序运行过程中实时加载和释放。因此,局部变量的生存周期为申请到所释放该段栈空间。
-
堆区(heap)
堆是一个大容器,但没有先进后出的顺序,用于动态内存分配。堆在内存中位于BSS和栈之间。



