Linux中进程虚拟内存的布局

本文详细介绍了64位系统中进程虚拟内存的布局,包括预留段、代码段、数据段(.data和.bss)、堆、文件映射区和栈。各段分别负责不同的功能,如代码段存储只读指令,数据段存放已初始化的变量,堆动态分配内存,栈保存函数调用信息。了解这一布局对于理解程序执行和内存管理至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程虚拟内存的布局总览

在这里插入图片描述

预留段(.reserve)

一共占用128M,属于预留空间,进程是禁止访问的

代码段(.text)

可执行文件加载到内存中的只有数据和指令之分,而指令被存放在.text段中,一般是共享的,编译时确定,只读,不允许修改

数据段(.data)

存放在编译阶段(而非运行时)就能确定的数据,可读可写。也就是通常所说的静态存储区,赋了初值的全局变量和赋初值的静态变量存放在这个区域,常量也存放在这个区域

数据段(.bss)

通常用来存放程序中未初始化以及初始化为0的全局/静态变量的一块内存区域,在程序载入时由内核清0

堆(.heap)

用于存放进程运行时动态分配的内存,可动态扩张或缩减,这块内存由程序员自己管理,通过malloc/new可以申请内存,free/delete用来释放内存,heap的地址从低向高扩展,是不连续的空间

文件映射区

包括动态库、共享内存等,malloc分配超过128kb内存时,需要用到这个区。

栈(.stack)<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值