• 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

  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/NoneID/p/9179569.html
Copyright © 2020-2023  润新知