您的位置:中国风网 > 电脑之家 > 酷软资讯

关于MFC下检查和消除内存泄露的技巧

中国风网 2005-11-5 14:50:15



  摘要

  本文分析了Windows环境使用MFC调试内存泄露的技术,介绍了在Windows环境下用VC++查找,定位和消除内存泄露的方法技巧。

  关键词:VC++;CRT 调试堆函数;试探法。

  技术原理

  检测内存泄漏的主要工具是调试器和 CRT 调试堆函数。若要启用调试堆函数,请在程序中包括以下语句:

#define CRTDBG_MAP_ALLOC
#include
#include

  注意 #include 语句必须采用上文所示顺序。如果更改了顺序,所使用的函数可能无法正确工作。

  通过包括 crtdbg.h,将 malloc 和 free 函数映射到其“Debug”版本_malloc_dbg 和_free_dbg,这些函数将跟踪内存分配和释放。此映射只在调试版本(在其中定义了 _DEBUG)中发生。发布版本使用普通的 malloc 和 free 函数。

  #define 语句将 CRT 堆函数的基版本映射到对应的“Debug”版本。并非绝对需要该语句,但如果没有该语句,内存泄漏转储包含的有用信息将较少。

  在添加了上面所示语句之后,可以通过在程序中包括以下语句来转储内存泄漏信息:

_CrtDumpMemoryLeaks();

  当在调试器下运行程序时,_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

文章来源:天极


推荐给您的朋友】    【发表评论】    【关闭窗口

 ■:相 关 文 章

 使用MFC在应用程序中嵌入MS Word  (10月19日14:54:43)
 在MFC下如何定义全局变量和全局函数  (10月14日14:49:12)
 VC下用MFC类实现网络编程  (10月24日15:52:49)
 MFC中的数据类型  (7月1日13:44:47)