Windows 不同的地区有相同的分配地址

Windows 不同的地区有相同的分配地址,windows,windows-7,operating-system,virtual-address-space,virtualquery,Windows,Windows 7,Operating System,Virtual Address Space,Virtualquery,我检查了Windows7中进程的地址空间。我使用了VirtualQueryEx函数,这是我的示例的一部分,其中handleOfProcess\uuu是某个进程的句柄: MEMORY_BASIC_INFORMATION mbi; bool ok = (VirtualQueryEx(handleOfProcess_, (LPCVOID)0x00020000, &mbi, sizeof(mbi))== sizeof(mbi)); ok = (VirtualQueryEx(handleOfPro

我检查了Windows7中进程的地址空间。我使用了
VirtualQueryEx
函数,这是我的示例的一部分,其中
handleOfProcess\uuu
是某个进程的句柄:

MEMORY_BASIC_INFORMATION mbi;
bool ok = (VirtualQueryEx(handleOfProcess_, (LPCVOID)0x00020000, &mbi, sizeof(mbi))== sizeof(mbi));
ok = (VirtualQueryEx(handleOfProcess_, (LPCVOID)0x00021000, &mbi, sizeof(mbi))== sizeof(mbi));
当我调试时,我看到0x00020000
AllocationBase
0x00020000,而0x00021000
AllocationBase
0x00000000,这是另一个区域的
AllocationBase

怎么会这样


感谢所有。

来自以下文档:

对于自由页面,AllocationBase、AllocationProtect、Protect和Type成员中的信息未定义


State
的值是多少?第一次调用0x1000(MEM_COMMIT),第二次调用0x10000(MEM_FREE),谢谢,那么我如何检查空闲块是否位于具有某个分配基址的区域中?Richter不会在VMMap程序中检查块是否空闲。如果块是空闲的,则根据定义,它不在分配的区域中,因此无需检查。我完全不明白你的第二句话;里希特是谁或什么?是的,你是对的。我已经明白我想要什么,所以你不需要理解我的第二句话:)再次感谢。