进程中的内存管理

.1             一个进程运行时,所占用的内存分为几个部分:

.1.1        堆段:由编译器自动分配和释放,用来存放函数的参数,局部变量等。

          l   程序调用malloc申请内存的流程

          l   对于堆的管理,内核提供了两个系统调用brk和mmap。brk 用于更改堆顶地址,mmap则为进程分配虚拟地址空间。

          l   详细介绍请参照章节: 堆内存的管理

.1.2        栈段:一般由程序员分配和释放,若程序员不释放,程序结束时可能由OS释放。

          l   详细介绍请参照章节:栈内存管理

.1.3        代码段:存放程序的二进制代码。

.1.4        文字常量:存放程序的常量。程序结束后由系统释放。

.1.5        静态存储区(全局变量,静态变量):初始化的全局变量和静态变量在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域。程序结束后由系统释放。

          l   bss: 没有赋初值或初值为0的全局变量和静态变量。 (特点是: 可读写的,在程序执行之前BSS段会自动清0。 (Linux v4.1.2 测试通过)

          l   data: 有初值的全局变量和静态变量。(Linux v4.1.2 测试通过)

http://www.cnblogs.com/diegodu/p/4552490.html

http://www.linuxidc.com/Linux/2015-02/113077.htm

http://www.cnblogs.com/zhaoyl/p/3695517.html

以下是Linuxx86-32 进程内存结构:



 


猜你喜欢

转载自blog.csdn.net/lcxhjg/article/details/80925934
今日推荐