【问题标题】:C++ get the base address of a allocated sectionC ++获取分配部分的基地址
【发布时间】:2015-10-10 22:36:53
【问题描述】:

由于我不清楚之前我将重写我的问题。

我需要获取使用VirtualAllocEx() 分配的一段内存的绝对基地址。

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

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

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

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

【问题讨论】:

  • 请写完整的句子。
  • 四舍五入是documented behaviour for VirtualAlloc()...?!?函数分配,地址当然是页边界?
  • @DevSolar 我知道页面边界。这就是我首先提到它们的原因。

标签: c++ winapi memory virtualalloc


【解决方案1】:

免责声明:这里没有任何 WinAPI 经验。

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

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

基本地址

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

AllocationBase

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

难道您只检查了BaseAddress 而没有检查AllocationBase?因为后者听起来与您要找的完全一样...

【讨论】:

  • @John:哈哈……我很了解这些。很高兴看到我提供了帮助。有时,“知道”有问题的函数并且必须查找它是有益的。 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
相关资源
最近更新 更多