详细介绍Windows内存管理的
本文背景:
在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用;根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制。
本文目的:
对Windows内存管理机制了解清楚,有效的利用C++内存函数管理和使用内存。 本文内容:
本文一共有六节,由于篇幅较多,故按节发表。其他章节请看本人博客的Windows内存管理及C++内存分配实例(二)(三)(四)(五)和(六)。
1. 进程地址空间
1.1地址空间
32|64位的系统|CPU
操作系统运行在硬件CPU上,32位操作系统运行于32位CPU
上,64位操作系统运行于64位CPU上;目前没有真正的64位CPU。
32位CPU一次只能操作32位二进制数;位数多CPU设计越复杂,软
件设计越简单。
软件的进程运行于32位系统上,其寻址位也是32位,能表示
的空间是232=4G,范围从0x0000 0000~0xFFFF FFFF。
NULL指针分区
范围:0x0000 0000~0x0000 FFFF
作用:保护内存非法访问
例子:分配内存时,如果由于某种原因分配不成功,则返回空指针
0x0000 0000;当用户继续使用比如改写数据时,系统将因为发生访问
违规而退出。
那么,为什么需要那么大的区域呢,一个地址值不就行了吗?
我在想,是不是因为不让8或16位的程序运行于32位的系统上呢?!
因为NULL分区刚好范围是16的进程空间。
独享用户分区
范围:0x0001 0000~0x7FFE FFFF
作用:进程只能读取或访问这个范围的虚拟地址;超越这个范围的行
为都会产生违规退出。
例子:
程序的二进制代码中所用的地址大部分将在这个范围,所有
exe和dll文件都加载到这个。每个进程将近2G的空间是独享的。
全面介绍 Windows 内存管理机制及 C++内存分配实例 (一):进程空间 在编程中,很多 Windows 或 C++的内存函数不知道有什么区别,更别谈有效使 用;根本的原因是,...
全面介绍 Windows 内存管理机制及 C++内存分配实例本文背景: 在编程中,很多 ...因为 NULL 分区刚 好范围是 16 的进程空间。 ? 独享用户分区 范围:0x0001 ...
全面介绍Windows内存管理机制及C++内存分配实例(二):内存状态查询 隐藏>> 本文..."总进程空间="<<memStatus.dwTotalVirtual<<endl; cout<<"可用进程空间="<<...
全面介绍Windows内存管理... 8页 1下载券 全面...(&memStatusVirtual1); cout<<"虚拟内存分配:"<<...进程空间减少了 1G;减少的物理内存和可用页文件用来...
全面介绍Windows内存管理机制及C++内存分配_工学_高等教育_教育专区。全面介绍... //分配空间,耗用堆栈 char c[1024*800]; printf("c[0]=%x\n",c); ...
Windows内存管理机制及C++内存分配实例(四):内存...然后和 exe 文件一样,将 dll 文件映射到进程空间... 全面介绍Windows内存管理... 20页 2下载券 全面...
C++内存分配实例 全面介绍 Windows 内存管理机制及 C++内存分配实例文章整理: www...进程空间中的 32 位地址如下: 高 10 位用来找到 1024 个页目项中的一项,...
全面介绍 Windows 内存管理机制及 C++内存分配实例(二):内存状态查询 内存分配...这里还标识了总进程空间,还有可用的进程空间, 程序只用了 22 兆的内存空间。...
本文背景: 在编程中,很多 Windows 或 C++的内存函数不知道有什么区别,更别谈...内存管理机制--堆 (Heap) ·使用场合 堆是进程创建时在进程空间建立的区域,由...
Windows内存管理机制及C++... 6页 5财富值 全面介绍Windows内存管理机... ...2 用户空间内存分配方式 ......
热门文档