zoukankan      html  css  js  c++  java
  • valgrind内存检测工具

    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 --version
    valgrind-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

  • 相关阅读:
    Spring事务管理
    Java GC算法
    内连接,左连接,右连接
    ThreadLocal相关
    @Autowired 与 @Resource的区别
    spring注解
    BZOJ 1040 ZJOI 2008 骑士 树形DP
    HDU 5575 Discover Water Tank 并查集 树形DP
    BZOJ 3571 画框 KM算法 最小乘积最大权匹配
    ZOJ 3256 Tour in the Castle 插头DP 矩阵乘法
  • 原文地址:https://www.cnblogs.com/NoneID/p/9179569.html
Copyright © 2011-2022 走看看