在 VirtualFree 的 msdn 文档中
BOOL WINAPI VirtualFree(
_In_ LPVOID lpAddress,
_In_ SIZE_T dwSize,
_In_ DWORD dwFreeType
);
dwSize [in] 要释放的内存区域的大小,以字节为单位。
如果 dwFreeType 参数为 MEM_RELEASE,则此参数必须为 0(零)。该函数释放在对 VirtualAlloc 的初始分配调用中保留的整个区域。
似乎系统可以通过地址获得整个区域大小
我的问题是:我该怎么做(通过地址获得整个区域大小)
PS:VirtualQuery API 不能做到这一点
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 的整个区域大小