c++ - 您如何找出谁创建了私有(private)堆?

标签 c++ windows heap-memory

我有一个存在内存泄漏的 Windows C++ 应用程序。我很确定泄漏是在我们的(许多)链接库之一中。我已经在我们的应用程序中检测了全局新建和删除功能,应用程序调用分配内存似乎很好。不过,它们约占流程工作集的 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

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

好的,那么我如何找出哪些库正在执行此操作?无论如何要弄清楚谁在分配堆?我有每个堆的句柄。

最佳答案

最直接的方法是 Hook HeapCreate()功能。这样做的一个例子是 here .

关于c++ - 您如何找出谁创建了私有(private)堆?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3637485/

相关文章:

c++ - 如何检查模板中发送的参数类型?

c++ - 对 `gluOrtho2D' 的 undefined reference

c++ - (C++);动态决定函数的类型(派生类)

c - 写入 Fortran 和 C 程序之间的管道时出现问题

c - 如何绕过 "foreground lock timeout"激活我的窗口?

java.lang.OutOfMemoryError : Java heap space Hadoop Ubuntu 错误

security - Youtube官方-客户端错误(400)格式错误或非法请求

c++ - 使用assert(f<char, int>()) 编译错误

c# - 从字面上绘制一切

debugging - Windows 堆 block 头解析和大小计算