Разные регионы имеют одинаковый адрес распределения

Я изучаю адресное пространство процесса в 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 не определена.

Другие вопросы по тегам