我在Windows 7中检查进程的地址空间。我使用VirtualQueryEx
函数,这是我的示例的一部分,其中handleOfProcess_
是某个进程的句柄:
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));
当我进行debugging时,我看到0x00020000的AllocationBase
是0x00020000 ,而0x00021000的Allocationbase
是0x00000000 ,这是另一个区域的allocationBase
。
怎么会发生?
谢谢大家。
从MEMORY_BASIC_INFORMATION
的文档:
对于空闲页面,AllocationBase,AllocationProtect,Protect和Type成员中的信息是未定义的。