我有一个带有一套单元测试的 Win32 C++ 应用程序。单元测试完成运行后,我希望自动生成关于任何未释放内存的人类可读报告。理想情况下,该报告将有一个堆栈,其中包含每个未释放分配的文件和行号信息。最好以一致的顺序生成它们,以便轻松区分一次运行和下一次运行。 (基本上,我想要 valgrind --leak-check=full 的结果,但在 Windows 上)。
我已经成功地使用 UMDH 从正在运行的进程中获取此类信息,但该工具似乎只有在您附加到现有进程时才有效。我希望每次运行单元测试时都自动发生这种情况。
有没有工具可以做到这一点?如果是这样,我该如何使用它?
谢谢!
最佳答案
为了获得此类信息,我们覆盖了 new/delete 和 malloc/free,提供了我们自己的堆实现,在分配时存储堆栈跟踪并在堆被销毁时生成报告(以及添加哨兵来检测缓冲区溢出) .
这是您第一次做的相当多的工作。 This guy已经编写了一个可以处理所有难点的免费软件工具 - 我自己还没有尝试过,但是他对他如何编写它的解释在你自己动手时很有用。
关于c++ - 运行单元测试时的内存泄漏检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/169058/