我正在寻找Valgrind来帮助提高我的C编码/调试,当我发现它只适用于Linux时——我没有其他需要或兴趣将我的操作系统转移到Linux,所以我想知道是否有同样好的Windows程序。
当前回答
Clang支持地址消毒插件(-faddress-sanitizer选项),它几乎可以检测到Valgrind可以发现的大多数错误(不支持检测未初始化的内存读取和内存泄漏)。请参阅本页与Valgrind和其他类似工具的比较。一个正式的Windows端口目前正在进行中,请参阅Windows ASan端口。
几个月前,我尝试自己在Windows上构建它,但放弃了,请看我的相关问题。如果你想再试一次,事情可能已经变得更好了。
其他回答
我使用了Insure++,它在查找c++内存泄漏/损坏和许多其他错误,如未初始化的变量,指针错误,字符串等方面做得很好,它还做了可视化的“代码覆盖”和运行时内存使用等。这让你对你的代码更有信心。你可以尝试一下试用版。
您可能想了解Mozilla在内存泄漏方面所做的工作。他们工具箱中的一个工具是用作内存泄漏检测器的Hans Boehm垃圾收集器。
你可以参考《Game Programming Gems 8》中的文章《游戏内内存分析器的设计与实现》。
它展示了如何实现一个低开销的半侵入式实时内存分析器,源代码在CD-ROM中提供。
所有分析器或多或少都包括检查内存泄漏,并在分配内存时显示堆栈。
我可以推荐英特尔并行检查器。使用简单,不需要重新编译。试运行期为30天。
GlowCode和AtromatedQA也包含这样的功能。他们都提供免费试用。
Compuware DevPartner(又名BoundsChecker)在对比中需要慢速的“仪器”重新编译,应用程序在检查错误时也会运行得更慢。和BoundsChecker不能工作与64位evsrions在所有。我们放弃了那个工具。
Boost Test库可以检测内存泄漏。
推荐文章
- int的最大值
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- GIT克隆在windows中跨本地文件系统回购
- C“int”的大小是2字节还是4字节?
- 多维数组如何在内存中格式化?
- printf()和puts()在C语言中的区别是什么?
- 断言是邪恶的吗?
- 如何运行一个PowerShell脚本而不显示窗口?
- PowerShell:仅为单个命令设置环境变量
- 有效,但毫无价值的语法在开关情况下?
- 为什么这个Windows批处理文件只执行第一行,而在命令shell中执行所有三行?
- 如何在Visual Studio中找到堆栈跟踪?
- 环境变量存储在Windows注册表的哪里?
- 有一个好的Valgrind Windows的替代品吗?
- gcc在哪里查找C和c++头文件?