内存泄露检查

2016-02-19 12:15 7 1 收藏

图老师小编精心整理的内存泄露检查希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - 编程语言 】

 

在VC中提供内存检查的机制是跟踪new操作,也就是说所有的new操作都会被记录,如果通过new操作所分配的内存未被正常delete将会在程序退出时在调试窗口中显示出具体的内存泄露信息。

同样通过malloc分配的内存也会被跟踪,但是在显示时就不会知道实在程序中何处进行了malloc操作。先看一下下面的例子:

void _tmain()
{ ...
char *pszNew=(char*)malloc(200);
char *pszNew2=new char[100];
CString *pszNew3=new CString("test");
...
}

//通过调试方式运行后并退出,可以看到调试信息中关于内存泄露的信息如下:

Detected memory leaks!
Dumping objects -
strcore.cpp(118) : {37} normal block at 0x007702E0, 17 bytes long.
Data: test 01 00 00 00 04 00 00 00 04 00 00 00 74 65 73 74
G:emp2sam_sp_33sam_sp_33.cpp(42) : {36} normal block at 0x00770520, 4 bytes long.
Data: w EC 02 77 00
//对于CString *pszNew3=new CString("test");产生的信息
G:emp2sam_sp_33sam_sp_33.cpp(41) : {35} normal block at 0x00770320, 100 bytes long.
Data: CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
//对于char *pszNew2=new char[100];产生的信息
{34} normal block at 0x007703B0, 200 bytes long.
Data: CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
//对于char *pszNew=(char*)malloc(200);产生的信息
Object dump complete.

可以看到通过new分配的内存在显示信息时会报告出在那一个文件的那一行进行的new操作,而通过malloc分配的内存则仅仅是显示出内存泄露的信息而无法定位分配内存的程序位置。

此外如果需要在文件头部定义DEBUG_NEW宏才可以正确的跟踪new操作。具体代码如下:

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

由于对new操作的跟踪只需要在调试版本中出现所以使用了条件编译。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

我们可以看到VC所提供的检查内存泄露的方式是非常易于使用的,我们在开发程序时一定要注意内存的分配问题,特别是对于一些长时间运行的程序。
 

 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1600336.html

延伸阅读
对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。Debug起来也是比较累人。其实Linux系统下有一个使用的工具可以帮忙来调试的,这就是Mtrace。Mtrace主要能够检测一些内存分配和泄漏的失败等。下面我们来学习一下它的用法。 使用Mtrace来调试程序有4个基本的步骤,需要用到GNU C 函数库里面的一些辅助的函数功能...
标签: 问题肌肤
颈纹形成的原因一:人体自然衰老 女人进入一定年龄阶段后,肌肤开始进入衰老进程,这个时候无论是脸部还是其他部位的肌肤,都会随着时间的推移而出现皱纹衰老型肌肤问题,颈部更是如此。在加上颈部运动频繁,肌肤更加容易出现颈纹,非常明显,而且很难消除,成为出卖年龄的肌肤问题之一。 颈纹形成的原因二:紫外线刺激 ...
标签: 办公软件
在打开的Word文档主界面中,单击“文件→属性”,就可以打开文档的“属性”窗口,一般情况,在此窗口中的“摘要”选项卡中显示了与作者有关的一些信息,如作者,单位等。某些情况下,可能你不想让这些信息被别人看到,那该如何设置呢?下面笔者就以Word 2002为例来介绍设置方法,在其他版本的Word中设置方法大同小异,朋友们可以参照本文自行...
标签: 孕期
你比别人多皱纹的原因在哪 .hzh {display: none; } 皱纹 和同龄人比起来,你看上去要大3~5岁,不是因为肥胖或者脱发,而是因为皱纹,它不是那种浅碎的小细纹,而是深刻的嵌入肌肉的深纹。 ●原因:皱纹是紧张造就的沟壑。紧张消耗了许多生命活动所需的营养,使细胞活力和新陈代谢速度...
标签: 生活常识
怎样防止手机泄露私密 图老师阅读配图   8招防止手机泄露私密 人们的日常生活越来越离不开手机了,但不安全WIFI网络,系统漏洞,常会使私密被泄露,造成生活的困扰。有没有什么好办法防手机泄密? 随时随地地拍照、发微博、查信息,给你的生活带来无限便利的同时,你是不是有着几种带有安全隐患的八大使用习惯,希望能...

经验教程

380

收藏

31
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部