操作系统虚拟内存的布局
进程虚拟内存的布局总览
预留段(.reserve)
一共占用128M,属于预留空间,进程是禁止访问的
代码段(.text)
可执行文件加载到内存中的只有数据和指令之分,而指令被存放在.text段中,一般是共享的,编译时确定,只读,不允许修改
数据段(.data)
存放在编译阶段(而非运行时)就能确定的数据,可读可写。也就是通常所说的静态存储区,赋了初值的全局变量和赋初值的静态变量存放在这个区域,常量也存放在这个区域
数据段(.bss)
通常用来存放程序中未初始化以及初始化为0的全局/静态变量的一块内存区域,在程序载入时由内核清0
堆(.heap)
用于存放进程运行时动态分配的内存,可动态扩张或缩减,这块内存由程序员自己管理,通过malloc/new可以申请内存,free/delete用来释放内存,heap的地址从低向高扩展,是不连续的空间
文件映射区
包括动态库、共享内存等,malloc分配超过128kb内存时,需要用到这个区。