valgind的使用
来源:互联网 发布:淘宝客api是什么 编辑:程序博客网 时间:2024/05/21 21:34
介绍:
valgrind是一个在linux下极其有用的工具。他通过伪造malloc()监控分配在堆上的数据。当(目标)程序想要分配堆存储器时,valgrind将会拦截(目标程序)的malloc()和free()的调用,然后运行自己的malloc()和free()。valgrind的malloc()会记录调用它的是哪段代码和分配了哪段存储器。程序结束时,valgrind会汇报堆上有哪些数据,并告诉你这些数据是由哪段代码创建的。
下面来使用valgrind
1)下载valgrind的源代码
http://www.valgrind.org/downloads/current.html
2)解压,并编译这些代码(因为我是OSX,所以多了一条选择Xcode来编译的语句),可能会因为权限问题,所以先切换到root
sudo -i
tar -jxvf valgrind-3.9.0.tar.bz2
cd valgrind-3.9.0
./configure
sudo xcode-select-switch /Applications/Xcode.app/Contents/Developer
make
make install
make install成功之后,查看一下当前valgrind的版本、查看一下帮助:
3)写一个malloc,但是没有free的例子
4)编译上面的程序
使用如下命令,启动程序:
valgrind --leak-check=full./memory_leaks_test
上图所说,有一个内存出现泄漏definitely lost表示,泄漏了10bytes的内存
5)加上对应的free之后,再次使用
valgrind--leak-check=full ./memory_leaks_test
启动程序,可以看到已经没有errors了
- valgind的使用
- valgind的使用
- GUID使用的使用
- ${}的使用
- 的使用
- @[],@()的使用
- ->的使用
- +、-、*、/、%的使用
- &&的使用
- %:的使用
- Makefile中使用$$的使用
- Makefile中使用$$的使用
- Red5的使用--使用日志
- prefernce的使用具体使用
- 【工具使用】git 的使用
- 关于使用AsyncTaskLoader的使用
- 使用CABasicAnimation的基本使用
- 使用RocketMQ的客户端使用
- Google打不开的解决方法
- 获取程序Appdelegate中无需释放的特定控制器,非新建-------IOS
- ExpandableListView的首次加载全部展开,并且点击Group不收缩、
- 纯Struts2 AJAX树实现方式及源码
- 模态 怎么可以拿到 主动弹的那个控制器?
- valgind的使用
- 【Android笔记】MediaPlayer基本使用方式
- IE单进程模式设置
- HTTP协议头详解
- 【索引】Dynamic Programming
- 用谷歌账号登陆magento、
- RESHBRFYT
- 步入C#大门
- LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏