0

我正在开发一个在更大的应用程序中运行的 Visual Studio 2008 插件 DLL。我可以在调试中构建它,附加到进程,并逐步执行我的代码。我现在遇到的主要问题是内存泄漏检测。

通常我使用 VLD,但这似乎只在我从 Visual Studio 启动可执行文件时给我输出。即使在终止托管我的插件的主程序之后,VLD 也没有通过附加到进程给我任何输出。

我可以构建自己的测试容器,但这需要一些时间,而且它仍然不会涵盖大部分功能。

有没有一种简单的方法可以通过附加到进程来进行内存泄漏检测?

我试过 _CrtDumpMemoryLeaks(),但是它不起作用,它没有检测到像这样的简单行

int * memoryleak = new int[5000000];

它通常在直接从 Visual Studio 中运行时检测到

任何帮助表示赞赏,谢谢!

4

1 回答 1

0

您可以使用 umdh 实用程序找出您的 dll 中的内存泄漏。UMDH 包含在 Windows 调试工具中。有关更多详细信息,请查看以下链接 - https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/using-umdh-to-find-a-user-mode-memory-leak

如果您想使用具有易于使用的 GUI 来设置内存泄漏检测和泄漏报告的内存泄漏工具,那么您可以使用 Software Verify 的 C++ Memory Validator 工具。虽然它是一个付费工具,但是您可以查看它的试用版来评估它。

于 2017-11-02T19:37:41.620 回答