C ++获取已分配部分的基址

时间:2015-07-21 12:56:50

标签: c++ winapi memory virtualalloc

因为在我改写问题之前我不清楚。

我需要获取用VirtualAllocEx()分配的内存部分的绝对基址。

例如,如果我分配0x20000字节并获取地址0x5000000。

我需要一种使用值0x5015000获取地址0x5000000的方法。

VirtualQuery()返回值0x5015000所在的页面地址,而不是分配的内存段的基址。

所以我需要一种不同的方法来查找任何已分配内存段的基址。

1 个答案:

答案 0 :(得分:3)

免责声明:无论如何都没有WinAPI体验。

  

VirtualQuery()返回值0x5015000所在的页面地址,而不是分配的内存段的基址。

据我了解the docsVirtualQuery()会返回包含多条信息的structure,包括......

  

<强> BaseAddress

     

指向页面区域基址的指针。

     

<强> AllocationBase

     

指向VirtualAlloc函数分配的页面范围的基址的指针。 BaseAddress 成员指向的页面包含在此分配范围内。

是否仅检查了BaseAddress而非AllocationBase?因为后者听起来和你想要的完全一样......