Windows 内存管理
1 . Windows 的内存结构 Windows 系统中的每个进程都被赋予它自己的虚拟地址空间。对于 32 位进程来说,这个地址空间是 4GB ,因为 32 位指针可以拥有从 0x00000000 至 0xFFFFFFFF 之间的任何一个值。对于 64 位进程来说,则这个空间是 16EB 。由于每个进程可以接收它自己的私有的地址空间,因此当进程中的一个线程正在运行时,该线程也只能访问只属于它的进程的内存。属于所有其他进程的内存则隐藏着,并且不能被访问。 每个进程的虚拟地址空间都要划分成各个分区,地址空间的分区时根据操作系统的基本实现来进行的,不同的 windows 内核,其分区也略有不同。下面以 32 位 windows 2000 (x86 和 alpha 处理器 ) 分区 地址范围 作用 NULL 指针分配的区域 0x00000000 为了帮助掌握 NULL 指针的分配情况,任何读写都将引发访问违规 0x0000FFFF 用户方式分区 0x00010000 这是进程的私有空间,该分区是维护进程的大部分数据的地方。 0x7FFEFFFF 64k 禁止进入分区 0x7FFF0000 这个分区是禁止进入的,任何访问都将是违规。保留此分区是为了更加容易地实现操作系统。怕用户内存越界到内核区。 0x7FFFFFFF 内核方式 0x80000000 这个分区是存放操作系统代码的地方