C++ | 4G虚拟地址空间布局

本文详细介绍了C++中虚拟内存的布局,包括4G虚拟内存的划分、各段的功能及用途,如.text、.data、.bss段,以及堆栈的区别等。还解释了内存的分配方式。

最近复习到C++的虚拟地址空间布局,这是之前学习过的内容,但是有些忘记了。

画图了解一下吧,图像便于记忆!(这里借用舍友饭_团画的图,博主已经在小本本上画过了,大家也要自己画一下。)

虚拟内存,顾名思义,是虚拟的内存,不是真实存在的内存。操作系统给每个进程分配了4G的虚拟内存,而不是内存。也就是说程序运行时,操作系统先将相关的文件和数据从磁盘上读取,再通过地址映射到虚拟内存上,内存通过和虚拟内存与物理内存之间的映射关系获取当下进程需要的文件和数据。

4G的虚拟内存,分为3G的用户空间和1G的内核空间。这1G的内核空间实际是每个进程所共享的,但是在该进程自己看来,仿佛是独属于自己的。

3G的用户空间:

(1)在地址为 0x0000 0000 到 0x0804 8000 的位置称为保留区,大小为128M,是不可访问区。地址 0x0000 0000 不能访问,即不可读不可写。

(2).text 段存放指令,区域的大小在程序执行前已经确认,可能包含一些只读的常数变量,如字符串常量。

(3).

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值