当前位置:   article > 正文

C++学习——C/C++ 内存泄漏检测工具:Valgrind_c++ 内存泄漏分析工具

c++ 内存泄漏分析工具

对于初学者(我)内存泄露是一个尴尬又不得不面对的一个问题。

本文介绍了一个C++内存泄露的检测工具:Valgrind

主要从以下的几个步骤介绍这个工具。

工具介绍

        Valgrind是一个用来分析代码执行的工具集,主要由以下的几个工具组成:

       

  1. Memcheck是一个内存错误检测器。它有助于使你的程序,尤其是那些用C和C++写的程序,更加准确。
  2. Cachegrind是一个缓存和分支预测分析器。它有助于使你的程序运行更快。
  3. Callgrind是一个调用图缓存生成分析器。它与Cachegrind的功能有重叠,但也收集Cachegrind不收集的一些信息。
  4. Helgrind是一个线程错误检测器。它有助于使你的多线程程序更加准确。
  5. DRD也是一个线程错误检测器。它和Helgrind相似,但使用不同的分析技术,所以可能找到不同的问题。
  6. Massif是一个堆分析器。它有助于使你的程序使用更少的内存。
  7. DHAT是另一种不同的堆分析器。它有助于理解块的生命期、块的使用和布局的低效等问题。
  8. SGcheck是一个实验工具,用来检测堆和全局数组的溢出。它的功能和Memcheck互补:SGcheck找到Memcheck无法找到的问题,反之亦然。
  9. BBV是个实验性质的SimPoint基本块矢量生成器。它对于进行计算机架构的研究和开发很有用处。

由以上介绍可以看出,其实我们当下最需要用的就是Memcheck,用来对内存错误进行检测

该工具可以检测下列与内存相关的问题 :

  • 未释放内存的使用
  • 对释放后内存的读/写
  • 对已分配内存块尾部的读/写
  • 内存泄露
  • 不匹配的使用malloc/new/new[] 和 free/delete/delete[] 重复释放内存

实现功能

安装方法

https://blog.csdn.net/stpeace/article/details/61620301

  1. wget http://www.valgrind.org/downloads/valgrind-3.15.0.tar.bz2
  2. tar jxvf valgrind-3.15.0.tar.bz2
  3. cd valgrind-3.15.0
  4. ./configure --prefix=/root/valgrind-3.15.0
  5. make
  6. make install

使用教程

  1. //使用方法如下所示:
  2. $ valgrind --tool=memcheck ./ Test
  3. $valgrind --tool=memcheck --leak-check=yes ./Test

以上内容主要整理自:https://yuanfentiank789.github.io/2018/11/01/%E7%94%A8Valgrind%E6%A3%80%E6%B5%8B%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F/

C/C++ 内存泄漏检测工具:Valgrind https://murphypei.github.io/blog/2019/04/valgrind-memory-leaky

感谢以上大佬的博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/699602
推荐阅读
相关标签
  

闽ICP备14008679号