valgrind内存泄露检测工具

1、安装 valgrind
linux环境首先进入root用户
而后执行下面的命令
tar -jxvf valgrind-3.12.0.tar.bz2
cd valgrind-3.12.0
./configure
make
make installlinux

valgrind --version 查看valgrind 版本,而且验证是否安装成功

2、查看内存泄漏示例ios

#include <iostream>
using namespace std;

int main()
{
    char *p = new char[10];
    *p = 'a';
    *p++ = 'b';

    cout << p << endl;

    return 0;
}

 g++ -g -o core main.cpp

 valgrind --leak-check=yes --show-reachable=yes --log-file=a.log ./core

 valgrind --leak-check=full  --show-reachable=yes  --log-file=a.log ./shdaily.fcgi "op=search&date=2011-04-14&current=4"

--tool=memcheck     //使用valgrind的memcheck功能

-show-reachable=yes    //是否检测控制范围以外的泄漏,好比全局指针、static指针等

--log-file=a.log      //结果输出到文件

--leak-check=full      //显示具体代码中泄漏的地方

而后能够看出哪一行内存泄漏了编程

  1. 概述
  2. Valgrind
    1. 内存泄漏监测
      3.1. 示例代码
      3.2. 编译它
      3.3. 用Valgrind监测进程的内存泄漏
  3. 悬挂指针
    4.1. 示例代码
    4.2. Valgrind运行结果
  4. 屡次释放同一个指针
    5.1. 示例代码
    5.2. Valgrind 监测
  5. Valgrind的优缺点
    6.1. Advantages
    6.2. Disadvantages
  6. Valgrind的其余工具
    7.1. Cachegrind
    7.2. Callgrind
    7.3. Helgrind
    7.4. DRD
    7.5. Massif
    7.6. DHAT

1 概述
在用C/C++编程的时候,常常会出现下面三种内存问题:ide

内存泄漏
悬挂指针
屡次释放同一块内存
本系列文章简要介绍排查这三个问题的工具和方法,先看看Valgrind

int main()
{
    char *p = malloc(sizeof(char) * 10);
    if (p == NULL) 
    {
        return 0;
    }

    *p++ = 'a';
    *p++ = 'b';

    printf("%s\n", *p);

    return 0;
}
相关文章
相关标签/搜索