Linux进程的堆


进程的地址空间中有很大的一块区域是被称作“堆”的区域 其地址空间是在进程的.data和.bss的地址增长方向到动态库区域的低地址部分的范围
\
堆可以理解成是进程的一大块内存区域(已经分配实际物理内存,但并不是所有的地址空间都分配了物理内存,其大小根据系统类型和版本来定) 用来供进程中的程序动态分配内存空间 通常,进程通过向操作系统批发一大块实际的内存空间交给glibc管理以提高动态内存请求和释放的效率 在程序要请求动态分配比较小的内存空间的时候,glibc从这一大块内存空间中分配之 当程序要请求动态分配较大的内存空间的时候,由操作系统通过相应的系统调用来实现。 因为堆的特点是其中的内存区域可以动态(时机和大小都不确定)申请和释放 所以这一大块的物理内存的组织和管理方式通常有一下几种:

1)双向链表
2)位图
3)对象池
因为这块内存使用的动态性,所以相对栈来说,其性能稍差 Glibc是GNU发布的libc库,即C运行库,即C语言在运行时所依赖的运行环境,在C程序(main函数)运行前就已经加载到内存中

相关内容