查找Windows堆和模块之间的映射

usa*_*sac 4 c++ windows heap memory-management

我正在寻找一种方法来查找堆和拥有堆的模块之间的映射.我通过以下方式检索堆:

HANDLE heaps[1025];
DWORD nheaps = GetProcessHeaps((sizeof(heaps) / sizeof(HANDLE)) - 1, heaps);
for (DWORD i = 0; i < nheaps; ++i) {
  // find module which created for heap 
  // ...
}
Run Code Online (Sandbox Code Playgroud)

我想要这样做的原因是,在我的应用程序中,我发现大约40堆,有些是标准堆,其他是低碎片堆.现在我想弄清楚哪个模块使用哪种堆.

非常感谢!

Tim*_*sch 6

根据MSDN文档,GetProcessHeaps调用为您提供当前进程中所有堆的句柄,而不是系统中的所有堆,因此没有映射到其他进程.