C/C++工具:Valgrind 内存检测工具

安装

1. yum安装

yum -y install valgrind

2. 手动安装

  1. 下载
  2. 解压tar Valgrind压缩包
  3. 配置./configure --prefix=/usr/local/valgrind
  4. 编译make
  5. 安装make install
  6. 设置到环境变量
  • 编辑个人配置文件
vim ~/.bashrc
  • 增加valgrind路径到环境变量
PATH=${PATH}:/usr/local/valgrind/bin
  • 更新个人配置文件
source ~/.bashrc

检测内存泄露的方式

gcc XXX.c -g -o 程序
valgrind --tool=memcheck --leak-check=full ./程序

选项--tool

tool 作用
Memcheck 发现开发中绝大多数内存错误使用情况,是选项默认值。
Callgrind 检查程序中函数调用过程中出现的问题。
Cachegrind 检查程序中缓存使用出现的问题。
Helgrind 检查多线程程序中出现的竞争问题。
Massif 检查程序中堆栈使用中出现的问题。
Extension 利用core提供的功能,编写特定的内存调试工具。

选项--leak-check

leak-check 作用
summary 总结式内存泄露信息(默认)
full 详细式内存泄露信息
no 不显示内存泄露信息

常见错误

错误 中文解释
Use of uninitialised memory 使用未初始化的内存
Reading/writing memory after it has been free’d 使用已经释放了的内存
Reading/writing off the end of malloc’d blocks 使用超过malloc分配的内存空间
Reading/writing inappropriate areas on the stack 对堆栈的非法访问
Memory leaks – where pointers to malloc’d blocks are lost forever 申请的空间是否有释放
Mismatched use of malloc/new/new [] vs free/delete/delete [] malloc/free/new/delete申请和释放内存的匹配
Overlapping src and dst pointers in memcpy() and related functions src和dst的重叠

你可能感兴趣的:(C/C++工具:Valgrind 内存检测工具)