目录
1. 内存泄漏的产生
内存泄漏(Memory Leak) 是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果!
2. Valgrind使用的目的
Valgrind 是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。在人为编写代码不能预防消除内存泄漏的情况下,使用该工具对代码进行检测。
3. 安装 Valgrind 的命令
sudo apt-get install valgrind
4. 如何使用Valgrind
使用示例程序 malloc.c
#include <stdlib.h>
int main()
{
void *p;
p = malloc(20);
return 0;
}
malloc申请内存以后没有释放内存
然后输入命令 gcc –g malloc.c -o malloc编译,加入 -g 参数的目的是为了定位在第几行.
执行 valgrind --tool=memcheck --leak-check=full ./malloc,其中 --leak-check=full 指的是完全检查内存泄漏,
得到查询的结果:
==4339== Memcheck, a memory error detector
==4339== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==4339== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==4339== Command: ./a.out
==4339==
==4339==
==4339== HEAP SUMMARY:
==4339== in use at exit: 20 bytes in 1 blocks //退出时使用:1块中20字节
==4339== total heap usage: 1 allocs, 0 frees, 20 bytes allocated //总堆使用量:1个分配,0个释放,20个字节分配
==4339==
==4339== 20 bytes in 1 blocks are definitely lost in loss record 1 of 1 //1块中的20个字节肯定在1的丢失记录中丢失
==4339== at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==4339== by 0x10865B: main (main.c: