你如何找出谁创建了私有堆?

时间:2010-09-03 15:57:09

标签: c++ windows heap-memory

我有一个内存泄漏的Windows C ++应用程序。我很确定泄漏是在我们(很多)链接库中的一个。我已经在我们的应用程序中检测了全局new和delete函数,并且app调用分配内存似乎很好。尽管如此,它们占流程工作集的大约10%。 当我走过堆 // http://msdn.microsoft.com/en-us/library/ee175819%28v=VS.85%29.aspx 由GetProcessHeaps()返回 http://msdn.microsoft.com/en-us/library/aa366571%28v=VS.85%29.aspx

我可以看到十几个堆,其中一个堆有大约半GB的分配。 OPPS!

好的,我怎么能找出哪些库正在做呢?无论如何要知道谁在分配堆?我有每个堆的句柄。

1 个答案:

答案 0 :(得分:1)

直接的方法是挂钩HeapCreate()函数。这样做的一个例子是here