在VC++中检测内存泄露的方法

在VC编程时,内存泄露是个麻烦的事情,特别是有时候会产生比较严重的后果,而且这种BUG还比较难查.幸好借助一些第三方的软件,可以方便的找出会产生泄露的地方,比如BoundsChecker.有时候我们想简单的了解我们的程序是否存在内存泄露,还可以直接使用VC的调试库.
设置内存泄漏检测
检测内存泄漏的基本工具是调试器和CRT调试堆函数。为了使用调试堆函数,在你的程序中你必须含有下面的说明:
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#include说明必须按顺序说明。如果你改变了顺序,你所用的函数可能不能正常工作。包含crtdbg.h的_malloc_dbg和 _free_dbg将 malloc和free函数映射到测试版中,它可以跟踪内存的分配和释放。这种映射仅仅在一个测试体系中发生(也就是说,仅仅当_DEBUG被定义的时候)。释放的体系使用通常的malloc和 free功能。
#define说明映射CRT堆函数的低级版本到相应的测试版本。这个说明是不需要的,但是没有它,内存泄漏处含有的只是没有多大用处的信息。
一旦你已经增加了刚才的说明,你能够通过在你的程序中包含下面的说明来释放内存信息:
_CrtDumpMemoryLeaks();
当你在调试情况下运行你的程序时,在输出窗口的Debug 标签处_CrtDumpMemoryLeaks表现出内存泄漏的信息。内存泄漏信息类似下面这样:
Detected memory leaks!
Dumping objects ->
C:PROGRAM FILESVISUAL STUDIOMyProjectsleaktestleaktest.cpp(20) : {18} normal block at 0x00780E80, 64 bytes long.
Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD
Object dump complete.

(0)

相关推荐

  • VC内存泄露检查工具:VisualLeakDetector

    初识VisualLeakDetector灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题。当程序越来越复杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题。内存泄漏是最 ...

  • 内存泄露的解决办法

    什么是内存泄漏(memory leak)? 指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况.内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制 ...

  • 如何在电脑中查询内存型号

    使用电脑的用户,发现自己的内存不太够用, 因此想要查询自己电脑的内存型号,但是并不想拆开电脑看,想要在电脑中查询,却不知道如何操作,那么小编就来为大家介绍一下吧.具体如下:1. 第一步,双击或者右击打 ...

  • 怎么在抖音app中检测网络状况?

     许多小伙伴在刷抖音的时候发现我们的小视频一卡一卡的,第一个想到的就是可能是我们的问题,但是我们打开别的软件就没有卡顿的现象,我们要把这个网络症状结果上报抖音的网络相关应该如何操作呢?今天,小编教大家 ...

  • 如何查找Windows系统中电脑内存信息

    有的小伙伴在使用电脑时,会选择使用Windows系统,那么如何查看电脑内存信息呢?小编就来为大家介绍一下吧.具体如下:1. 第一步,双击或者右击打开计算机图标.2. 第二步,来到下图所示的计算机页面后 ...

  • 怎么查询iPhone6Splus苹果手机中的内存大小

    使用iPhone6Splus苹果手机的小伙伴,想要知道自己手机的内存大小是多少,但是却不知道如何查询, 那么小编就来为大家介绍一下吧.具体如下:1. 第一步,点击并打开设置应用.2. 第二步,来到下图 ...

  • Win8系统出现内存泄露导致黑屏.死机.卡顿的解决方法

    朋友的电脑是华硕S400CA,I7-3537U,4G内存,24+500G混合硬盘。开机一段时间后,内存就被占满了,接着就变得非常卡,甚至黑屏、死机。按理说这样的配置不至于会动不动就卡机,很有可能是出现 ...

  • IE6内存泄露的另类解决方法

    Hedger Wang 在国内 blog 上得到的方法:使用 try … finally 结构来使对象最终为 null ,以阻止内存泄露。 其中举了个例子: function createButton ...

  • 在BIOS中优化内存的方法

    内存在电脑中的重要性和地位仅次于CPU,其品质的优劣对电脑性能有至关重要的影响。为充分发挥内存的潜能,必须在BIOS设置中对与内存有关的参数进行调整。下面针对稍老一点的支持Intel PentiumⅢ ...