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]# .tar.bz2
[root@cf61420c928a soft]# .tar

查看README后得知:

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

show 版本

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

3.测试

====
==== LEAK SUMMARY:
==== definitely lost:  bytes  blocks
==== indirectly lost:  bytes  blocks
==== possibly lost: , bytes  blocks
==== still reachable: ,, bytes , blocks
==== suppressed:  bytes  blocks
==== Rerun with --leak-check=full to see details of leaked memory
====
==== For counts of detected and suppressed errors, rerun with: -v
==== Use --track-origins=yes to see where uninitialised values come from
==== ERROR SUMMARY:  errors from  contexts (suppressed:  from )
[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

valgrind内存检测工具的更多相关文章

  1. c++Valgrind内存检测工具---19

    原创博文,转载请标明出处--周学伟  http://www.cnblogs.com/zxouxuewei/ 一.Valgrind 概述 Valgrind是一套Linux下,开放源代码(GPL V2)的 ...

  2. 【调试】Linux下超强内存检测工具Valgrind

    [调试]Linux下超强内存检测工具Valgrind 内容简介 Valgrind是什么? Valgrind的使用 Valgrind详细教程 1. Valgrind是什么? Valgrind是一套Lin ...

  3. linux下内存检测工具的使用和对比

    linux背后隐藏着各种丰富的工具,学会这些工具,让这些工具更好地服务于我们的项目开发,不仅可以提高工作的效率,而且可以增强个人技术力. 参考:http://blog.chinaunix.net/ui ...

  4. Android 内存泄露总结(附内存检测工具)

    https://segmentfault.com/a/1190000006852540 主要是分三块: 静态储存区:编译时就分配好,在程序整个运行期间都存在.它主要存放静态数据和常量. 栈区:当方法执 ...

  5. C/C++内存检测工具Valgrind

    内存检测Valgrind简介 Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,作者是获得过Google-O'Reilly开源大奖的Julian Seward, 它包含一个内核 ...

  6. c程序内存检测工具 - Valgrind

    常用C程序内存泄露检测工具 https://blog.csdn.net/u012662731/article/details/78652651

  7. windows下内存检测工具

    1.Intel的Parallel Inspector工具,和vs集成超好, 而且还带了线程检测工具. 2.Purifyhttps://www.cnblogs.com/hehehaha/archive/ ...

  8. Visual Leak Detector 2.2.3 Visual C++内存检测工具

      Visual Leak Detector是一款免费的.健全的.开源的Visual C++内存泄露检测系统.相比Visual C++自带的内存检测机制,Visual Leak Detector可以显 ...

  9. iOS一个很好的内存检测工具

    虽然Xcode提供了instrument来检测内存,但是使用起来怎么看都很麻烦.然后有一个很不错的内存泄露的检测工具MLeaksFinder,使用的话不需要注入任何代码,直接导入库就行了.出现泄露的时 ...

随机推荐

  1. python中的第三方日志模块logging

    基本上每个系统都有自己的日志系统,可以使自己写的,也可以是第三方的.下面来简单介绍一下python中第三方的日志模块,入手还是比较简单的,但是也很容易给自己埋雷. 下面是我参考的资料链接 入手demo ...

  2. uva-10245-分治

    题意:数组二维空间内的点,求最近的俩个点的距离. 根据x排序,求左部分的最近距离,右部分最近距离,然后以中点,当前距离为半径,计算所有的点距离. #include <string> #in ...

  3. 定时器和函数的使用初级------移动一个div元素

    在页面的动画效果中,经常有看到某个小块从一个地方移动到另一个地方的现象,现在,我们也来自己做一个这样的小动画,涉及到的基础包括定时器的使用和函数的使用 例如,我们要实现一个小方块从左面移动到右面,然后 ...

  4. MYSQL性能优化(2)

    Insert语句优化 1.  多行并为一个语句  insert into table values (行1),(行2),........... 2. 使用中间内存队列, 逻辑是立马执行插入,其他数据放 ...

  5. MySQL 8.0 新增SQL语法对窗口函数和CTE的支持

    尝试了一下MySQL 8.0的部分新特性. 如果用过MSSQL或者是Oracle中的窗口函数(Oracle中叫分析函数), 然后再使用MySQL 8.0之前的时候,就知道需要在使用窗口函数处理逻辑的痛 ...

  6. 学了 Python 能用来做这些!

    来源商业新知网,原标题:学了 Python 能用来做什么? 说起编程语言,Python 也许不是使用最广的,但一定是现在被谈论最多的.随着近年大数据.人工智能的兴起,Python 越来越多的出现在人们 ...

  7. TypeError: Fetch argument None has invalid type <type 'NoneType'>

    (fetch, type(fetch)))TypeError: Fetch argument None has invalid type <type 'NoneType'> 我的解决方案是 ...

  8. 详细分析MySQL事务日志(redo log和undo log) 表明了为何mysql不会丢数据

    innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...

  9. A除以B

    1017 A除以B (20)(20 分) 本题要求计算A/B,其中A是不超过1000位的正整数,B是1位正整数.你需要输出商数Q和余数R,使得A = B * Q + R成立. 输入格式: 输入在1行中 ...

  10. ASP.NET Boilerplate-AbpSession

    /------2016-05-15/------介绍 如果一个应用支持登录,也许需要知道当前登录用户的一些操作,然而ASP.NET 本身对于展现层提供了Session的支持,ABP提供了 IAbpSe ...