有谁知道我在哪里可以找到C++的内存泄漏检测工具,该工具可以在命令行中运行,也可以在Windows和Linux中作为Eclipse插件运行。我希望它易于使用。最好不要覆盖new(),delete(),malloc()或free()的代码。类似于GDB的东西,如果它会出现在命令行中,但是我不记得它是用来检测内存泄漏的。如果有一个自动执行此操作的单元测试框架,那就太好了。
这个问题与其他问题(例如Memory leak detection under Windows for GNU C/C++)相似,但是我觉得不同,因为那些问题要求Windows特定的解决方案,或者有我宁愿避免的解决方案。我觉得我在寻找一些更具体的东西。建议不一定要满足所有要求,但是建议尽可能多。
谢谢。
编辑:既然出现了,通过“覆盖”,我的意思是任何需要我#include一个库或者以其他方式更改C++编译我的代码的方式,如果它在运行时执行此操作,则可以在不同的环境中运行代码不会影响任何会很棒的事情。另外,不幸的是,我没有Mac,因此任何建议都无济于事,但谢谢您的尝试。我的桌面运行Windows(我安装了Linux,但我的双显示器不支持它),并且我不想在VM中运行Linux,尽管这当然是一种选择。我的笔记本电脑运行Linux,因此我可以在那里使用该工具,尽管我绝对希望坚持使用台式机,因为它的屏幕空间非常适合使所有设计文档和要求都在 View 中,而不必在台式机上移动太多。
注意:虽然我可以尝试答案,但在尝试了建议并且令人满意之前,我不会将其中一个标记为已接受。
EDIT2:我不担心我的代码的跨平台兼容性,它是仅使用C++库的命令行应用程序。
最佳答案
Valgrind是您的best friend。 Valgrind有一个 eclipse plugin。
“Sadly” Valgrind不能在Windows上运行,但是可以在Mac OSX,* BSD和Linux上运行,因此我认为它是“多平台”。 :)
Valgrind会“覆盖” new/delete/malloc/free,但不会在编译过程中覆盖(因此,如果您要的意思是不必重新编译)。它解释二进制文件,因此在测试过程中性能会有所下降。