博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
valgrind内存检测工具
阅读量:6267 次
发布时间:2019-06-22

本文共 1798 字,大约阅读时间需要 5 分钟。

valgrind 那点事

---------------------------------------

内存检测工具 valgrind
要使用此工具,可以使用--tool=memcheck 在Valgrind命令行上指定。也可以不用指定,因为Memcheck是默认工具。

Memcheck是一个内存错误检测器。它可以检测到C和C ++程序中常见的以下问题。

访问内存不应该,例如溢出和溢出堆块,溢出堆栈顶部,以及在释放内存后访问内存。
使用未定义的值,即未初始化的值或从其他未定义的值派生的值。
堆存储器的不正确释放,如双释放堆块,或错配的使用 malloc/ new/ new[] 与 free/ delete/delete[]
重叠src和 dst指针 memcpy以及相关的功能。
向size内存分配函数的参数传递一个腥意(推测为负值) 。

1.安装:

官网:
http://valgrind.org/

2.安装

[root@cf61420c928a soft]# bzip2 -d valgrind-3.13.0.tar.bz2 [root@cf61420c928a soft]# tar xf valgrind-3.13.0.tar

查看README后得知:

[root@e46ae471064e valgrind-3.13.0]# ./configure --prefix=/usr/local/valgrind[root@e46ae471064e valgrind-3.13.0]# make[root@e46ae471064e valgrind-3.13.0]# make install

show 版本

[root@e46ae471064e valgrind-3.13.0]# /usr/local/valgrind/bin/valgrind --versionvalgrind-3.13.0[root@e46ae471064e valgrind-3.13.0]#

3.测试

==54== ==54== LEAK SUMMARY:==54== definitely lost: 112 bytes in 1 blocks==54== indirectly lost: 0 bytes in 0 blocks==54== possibly lost: 6,464 bytes in 12 blocks==54== still reachable: 1,066,645 bytes in 3,864 blocks==54== suppressed: 0 bytes in 0 blocks==54== Rerun with --leak-check=full to see details of leaked memory==54== ==54== For counts of detected and suppressed errors, rerun with: -v==54== Use --track-origins=yes to see where uninitialised values come from==54== ERROR SUMMARY: 42349 errors from 200 contexts (suppressed: 0 from 0)[root@cf61420c928a GetUrl]#

关于内存泄露

Memcheck将内存泄露分为两种,一种是可能的内存泄露(Possibly lost),另外一种是确定的内存泄露(Definitely lost)。Possibly lost 是指仍然存在某个指针能够访问某块内存,但该指针指向的已经不是该内存首地址。Definitely lost 是指已经不能够访问这块内存。而Definitely lost又分为两种:直接的(direct)和间接的(indirect)。直接和间接的区别就是,直接是没有任何指针指向该内存,间接是指指向该内存的指针都位于内存泄露处。--https://www.ibm.com/developerworks/cn/linux/l-cn-valgrind/index.html

转载于:https://www.cnblogs.com/wang-li/p/9179569.html

你可能感兴趣的文章
VC2012编译CEF3-转
查看>>
java 自己定义异常,记录日志简单说明!留着以后真接复制
查看>>
Android 使用AIDL实现进程间的通信
查看>>
机器学习(Machine Learning)&深度学习(Deep Learning)资料
查看>>
jquery的图片轮播 模板类型
查看>>
C# 获取文件名及扩展名
查看>>
Web安全学习计划
查看>>
输出有序数组的连续序列范围
查看>>
zinnia项目功能分析
查看>>
windows cmd for paramiko
查看>>
SQL经典面试题集锦
查看>>
View学习(一)-DecorView,measureSpec与LayoutParams
查看>>
色彩力量!21款你应该知道的优秀品牌设计
查看>>
SDUT 3503 有两个正整数,求N!的K进制的位数
查看>>
【.Net】C# 根据绝对路径获取 带后缀文件名、后缀名、文件名、不带文件名的文件路径...
查看>>
Redis常用命令速查 <第二篇>
查看>>
CSS规范
查看>>
使用FastDateFormat来代替JDK自带的DateFormat
查看>>
Python爬虫从入门到放弃(十六)之 Scrapy框架中Item Pipeline用法
查看>>
Android源代码解析之(三)--&gt;异步任务AsyncTask
查看>>