最近复习到C++的虚拟地址空间布局,这是之前学习过的内容,但是有些忘记了。
画图了解一下吧,图像便于记忆!(这里借用舍友饭_团画的图,博主已经在小本本上画过了,大家也要自己画一下。)

虚拟内存,顾名思义,是虚拟的内存,不是真实存在的内存。操作系统给每个进程分配了4G的虚拟内存,而不是内存。也就是说程序运行时,操作系统先将相关的文件和数据从磁盘上读取,再通过地址映射到虚拟内存上,内存通过和虚拟内存与物理内存之间的映射关系获取当下进程需要的文件和数据。
4G的虚拟内存,分为3G的用户空间和1G的内核空间。这1G的内核空间实际是每个进程所共享的,但是在该进程自己看来,仿佛是独属于自己的。
3G的用户空间:
(1)在地址为 0x0000 0000 到 0x0804 8000 的位置称为保留区,大小为128M,是不可访问区。地址 0x0000 0000 不能访问,即不可读不可写。
(2).text 段存放指令,区域的大小在程序执行前已经确认,可能包含一些只读的常数变量,如字符串常量。
(3).
C++虚拟内存解析

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

被折叠的 条评论
为什么被折叠?



