VirtualFreeのmsdnドキュメントで
BOOL WINAPI VirtualFree(
_In_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD dwFreeType
);
dwSize [in]解放されるメモリ領域のサイズ(バイト単位)。
dwFreeTypeパラメーターがMEM_RELEASEの場合、このパラメーターは0(ゼロ)でなければなりません。この関数は、VirtualAllocへの最初の割り当て呼び出しで予約されている領域全体を解放します。
システムは、アドレスを介してリージョンサイズ全体を取得できるようです
私の質問は:どうすればそれを行うことができますか(アドレスを介してリージョン全体のサイズを取得するため)
PS:VirtualQueryAPIはそれを行うことができません
void* p = VirtualAlloc(null, static_cast<SIZE_T>(_K * 128), MEM_RESERVE, PAGE_NOACCESS);
p = VirtualAlloc(p, _K * 64, MEM_COMMIT, PAGE_READWRITE);
MEMORY_BASIC_INFORMATION im;
VirtualQuery(p, &im, sizeof(im));
im.RegionSizeはMEM_COMMITのサイズであり、VirtualAllocを最初に呼び出したときのリージョンサイズ全体ではありません。