Windows内存结构
1 进程的虚拟地址空间布局 1.1 进程虚拟地址空间布局: 每个进程都被赋予它自己的虚拟地址空间。对于 3 2 位进程来说,这个地址空间是 4GB , Win2K 在 IA-32 架构的 CPU 下面的进程地址空间分布如下表所示: 地址空间说明 地址空间 64K NULL指针分配区 0x00000000~0x0000FFFF (64K) 用户空间 0x00010000~0x7FFEFFFF (2G–128K) 64K禁入区 0x7FFF0000~0x7FFFFFFF (64K) 内核空间 0x80000000~0xFFFFFFFF (2G) 可见 Win2K 的内存布局非常简单,主要有 4 个部分,两个不能被存取的 64K ;然后剩下的部分就是分别是用户空间( 2G–128K )和系统空间 (2G) 了。 1.2 进程虚拟地址空间布局说明: 1. 64K NULL 指针分配区: 这个分区的设置是为了帮助程序员掌握 NULL 指针的分配情况。如果你的进程中的线程试图读取该分区的地址空间的数据,或者将数据写入该分区的地址空间,那么 C P U 就会引发一个访问违规。也就是说在 Win2K 中, NULL 的宏定义不必一定是 0 ;可以是 64K 之内的任何地址;比如在 win2K 下面定义一个指针变量 pVar ;令 pVar 取值在 0 ~ 65535 ( 64K