valgrind 的使用
valgrind 介绍
Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。常见的用法是用来测试程序是否有内存泄漏的情况。详细的介绍可以参考:https://blog.youkuaiyun.com/destina/article/details/6198443
接下来我将介绍如何使用 valgrind,环境是 Linux
安装 valgrind
首先是安装:
参考教程:https://segmentfault.com/a/1190000017465212
wget https://sourceware.org/ftp/valgrind/valgrind-3.14.0.tar.bz2
不过速度非常慢,大概只有10多k每秒。我把文件放在了github上面,方便大家下载。
- 下载,下载完成后是一个tar.bz2的压缩包
- 解压缩:
tar -xvf valgrind-3.14.0.tar.bz2
- 进入目录:
cd valgrind-3.14.0
- 执行命令:
./autogen.sh
出现缺少 ‘aclocal’的错误
sudo apt-get install automake
安装好automake之后再次进行 ./autogen.sh
- 执行两个命令
make
sudo make install
这两个命令执行的时间会比较久
- 安装完成
valgrind --version
valgrind-3.14.0
使用 valgrind
假设我有一个C文件,先使用gcc进行编译,生成mian.o文件
然后执行以下命令:
valgrind --tool=memcheck --leak-check=full ./main 17 hw1-input06.txt (后面两个是参数,可以不用管)
结果:
可以看到堆的信息,分配了167块,回收了167块。
如果你忘记关掉读写文件,也会有提示,非常好用。
更多的例子和参数介绍可以参考:https://blog.youkuaiyun.com/justheretobe/article/details/52986461