当我在寻找帮助改进我的C语言编程和调试的工具时,我发现Valgrind仅适用于Linux操作系统。由于我没有将操作系统转移到Linux的其他需要或兴趣,因此我想知道是否有同样优秀的程序适用于Windows。
当我在寻找帮助改进我的C语言编程和调试的工具时,我发现Valgrind仅适用于Linux操作系统。由于我没有将操作系统转移到Linux的其他需要或兴趣,因此我想知道是否有同样优秀的程序适用于Windows。
我使用了 Insure++,它在查找 C++ 内存泄漏/破坏以及许多其他错误方面表现出色,如未初始化变量、指针错误、字符串等。它还提供可视化的“代码覆盖率”和运行时内存使用情况等功能,这些功能可以增强您对代码的信心。您可以尝试试用版本。
您可以尝试使用RuntimeChecker试用版或IBM Purify试用版。
一个免费的解决方案是在Visual Studio中使用以下代码:
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
用户模式转储堆(UMDH)实用程序与操作系统一起分析特定进程的Windows堆分配。这是来自Microsoft的一个相当不错的免费工具。这里有一个迷你教程“如何使用Umdh.exe查找内存泄漏”。
Clang支持地址Sanitizer插件(-faddress-sanitizer选项),它可以几乎检测到Valgrind可以发现的大多数错误(尽管目前不支持检测未初始化的内存读取和内存泄漏)。请参见this page,了解与Valgrind和其他类似工具的比较。官方的Windows端口目前正在进行中,请参见Windows ASan port。
我在几个月前尝试在Windows上自己构建它,但最终放弃了,请参见我的相关question。如果您想再试一次,事情可能已经变得更好了。
Parasoft Insure++一直以来都非常可靠:
只是一个想法,您也可以实现一个内存分配器并跟踪所有对malloc和free的调用。不过这可能对某些项目来说太过于繁琐。