Разные регионы имеют одинаковый адрес распределения
Я изучаю адресное пространство процесса в 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));
Когда я делаю отладку, я вижу, что AllocationBase
0x00020000 - это 0x00020000, а Allocationbase
0x00021000 0x00000000, который является allocationBase
другого региона.
Как это может случиться?
Спасибо всем.
1 ответ
Решение
Из документации для MEMORY_BASIC_INFORMATION
:
Для свободных страниц информация в членах AllocationBase, AllocationProtect, Protect и Type не определена.