Valgrind用于C++开发?

hel*_*hod 5 c++ valgrind memory-leaks

我是C++的新手,但有一些基本的C知识.在我过去的C(大学)项目中,我使用Valgrind来检查memleaks.

现在,使用C++,Valgrind是一个有效的工具吗?C++是否会遇到与C这样的memleaks相同的问题?或者是否有更好的工具与C++结合使用?

Kon*_*lph 8

我从不使用new和delete(或其他形式的手动内存管理),我甚至很少使用指针.我仍然需要和我搏斗内存泄漏无效的内存访问.1 Valgrind对我来说是不可或缺的工具.更重要的是gdb.


1正如Viktor在评论中指出的那样,在没有手动内存管理的情况下产生内存泄漏将是非常奇怪的(折扣循环引用和其他特殊情况).

  • @Viktor:诚然,这*是*在很大程度上是图书馆的错。但即使是现代 STL 实现也很乐意接受对 `operator []` 的超出范围的访问,而不会发出警告,即使在调试构建(GCC ...)中也是如此。 (2认同)
  • 但那不是内存泄漏吗?我不想自大,但如果你从未在你的代码中编写"= new"(注意"="),你就不会得到内存泄漏(是的,shared_ptrs可以相互交叉引用,但这种情况很少发生) (2认同)

Dav*_*ley 5

虽然 C++ 的内存处理能力比 C 好得多,但仍然很可能会出现混乱。智能指针很棒,但使用它们也可能会出错。这就是 valgrind 的用途。