内存管理

来源:互联网 发布:淘宝商品品牌怎么填写 编辑:程序博客网 时间:2024/06/10 18:49

l  代码区:加载的是可执行文件代码段,所有的可执行代码都加载到代码区,这块内存是不可以在运行期间修改


2静态区:静态区包含全局初始化数据区/静态数据区和未初始化数据区;

全局初始化数据区/静态数据区加载的是可执行文件数据段,存储于数据段(全局初始化,静态初始化数据,文字常量(只读))的数据的生存周期为整个程序运行过程

未初始化数据区加载的是可执行文件BSS段,位置可以分开亦可以紧靠数据段,存储于数据段的数据(全局未初始化,静态未初始化数据)的生存周期为整个程序运行过程


3栈区:栈是一种先进后出的内存结构,由编译器自动分配释放,一般存放函数的参数值、返回值、局部变量等。在程序运行过程中实时加载和释放,因此,局部变量的生存周期为申请到释放该段栈空间


4堆区:堆是一个大容器,它的容量要远远大于栈,但没有栈那样先进后出的顺序。用于动态内存分配。堆在内存中位于BSS区和栈区之间。一般由程序员分配和释放,若程序员不释放,会造成内存泄露,程序结束时由操作系统回收。

: