Linux下C++程序中的内存泄露检查

转载 2013年12月04日 19:44:45

Linux下编写C或者C++程序,有很多工具,但是主要的编辑器仍然是Gcc和G++。最近用到STL中的List编程,为了检测写的代码是否会发现内存泄漏,了解了一下相关的知识。

 

Linux下内存检测的工具有很多,主要的有valgrind, 是一个开源的工具。

 

下载:www.valgrind.org,最新版本是3.5。

 

安装:

1. 下载的文件是*.bz2,用bz2解压即可得到*.tar

2. tar cvf *.tar

3. ./configure; make; sudo make install安装成功。

 

使用:

 

g++ -g -o testlist testlist.cc

注意,一定要加上-g参数,表示生成调试Debug信息,否则后面的valgrind不能显示到出错行号。

 

然后就可以用valgrind了:

valgrind --tool=memcheck --leak-check=yes ./testlist

 

原理:

valgrind被设计成非侵入式的,它直接工作于可执行文件上,因此在检查前不需要重新编译、连接和修改你的程序。要检查一个程序很简单,只需要执行下面的命令就可以了。

  valgrind --tool=tool_name program_name


比如我们要对ls -l命令做内存检查,只需要执行下面的命令就可以了

   valgrind --tool=memcheck ls -l

 

valgrind包含几个标准的工具,它们是:

1、memcheck

2、cachegrind

3、helgrind

 

参考:http://hi.baidu.com/wind_stay/blog/item/b01934cd710ccc1b00e928c2.html

C++ 程序问题检查

1、死循环问题 逻辑死循环 while循环continue循环变量没有递增 循环变量用串了 解决方案:循环计数,超过一定次数跳出 2、内存异常 1.格式化字符串类型不匹配造成崩溃问题 ...
  • perfect2011
  • perfect2011
  • 2015年12月25日 17:15
  • 278

C++编译器越界检查机制

前天帮同事看了一个程序,现象是这样的,程序在执行完所有代码之后,莫名其妙的core(段错误),当时很忙,就简单的看了下,没有直接使用指针之类的代码,扫了一下关键的地方,也没有看到明显的问题。    ...
  • pecywang
  • pecywang
  • 2014年04月02日 14:59
  • 2649

Cppcheck--C/C++代码静态检测工具

官网: http://cppcheck.net/cppcheck 是一个静态代码检查工具,支持c, c++ 代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。 执行的...
  • wangshubo1989
  • wangshubo1989
  • 2016年10月20日 14:07
  • 18996

C++ 重载运算符“=”检测自赋值

重载赋值运算符 赋值运算符可能是最容易令人迷惑的一个,所以,重载它必须十分的小心。 1. 值运算符仅能重载为成员函数。  C++不允许赋值运算符被重载为全局形式,这是因为如果可以写出...
  • wo17fang
  • wo17fang
  • 2014年08月12日 10:40
  • 602

一个数组越界的C++程序

学生给我发了私信,一个程序运行了好久,在OJ就是提交不了。  题目是:Description输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进...
  • sxhelijian
  • sxhelijian
  • 2013年11月27日 09:59
  • 4257

基于visual c++之windows核心编程代码分析(8)自动下载更新程序

我们编写Windows程序,经常需要自动更新,该功能如何实现呢,我们来看代码实现与注释讲解     [cpp] view plain copy ...
  • flyingleo1981
  • flyingleo1981
  • 2016年12月08日 21:50
  • 872

C++中的运行时类型检查

C++中的运行时类型检查  简介  经常有人问到:“我怎样才能在运行时确定或检查C++中对象的类型呢?”,下面通过一个简单问题来作一演示。  以下程序会在第一次调用CFoo::Ani...
  • womanonthetr
  • womanonthetr
  • 2016年08月22日 09:01
  • 764

Linux下几款C++程序中的内存泄露检查工具

Linux下编写C或者C++程序,有很多工具,但是主要编译器仍然是gcc和g++。最近用到STL中的List编程,为了检测写的代码是否会发现内存泄漏,了解了一下相关的知识。所有使用动态内存分配(dyn...
  • gatieme
  • gatieme
  • 2016年07月19日 21:56
  • 11477

【代码质量】C++代码质量扫描主流工具深度比较

本文由腾讯WeTest团队提供,未经授权严禁转载!更多资讯可直接戳链接查看:http://wetest.qq.com/lab/  微信号:TencentWeTest 引言  静态代码分析是指无需运行...
  • wetest_tencent
  • wetest_tencent
  • 2016年05月27日 14:16
  • 8715

测试C++程序运行的时间

参加一个公司的笔试,给了两个题目,时间要求是越快越好,这时候就要求我们在编写程序之后测试程序所需的时间,尽量做到最小。 在C++中计算运行的时间是调用clock函数,使用clock函数获得程序开始和...
  • Jaster_wisdom
  • Jaster_wisdom
  • 2016年05月26日 22:29
  • 8040
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux下C++程序中的内存泄露检查
举报原因:
原因补充:

(最多只允许输入30个字)