1 / 10
文档名称:

VCMFC 内存泄漏查找方法.doc

格式:doc   大小:160KB   页数:10页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

VCMFC 内存泄漏查找方法.doc

上传人:q1188830 2020/1/6 文件大小:160 KB

下载得到文件列表

VCMFC 内存泄漏查找方法.doc

相关文档

文档介绍

文档介绍:VC/MFC内存泄漏的个人总结分类:内存2008-04-1517:101548人阅读评论(2收藏举报首先先看看下面的内容吧!我就是认真阅读了它,并结合自己所学的东西,解决了一个超难得问题(自己觉得!嘿嘿)关于MFC下检查和消除内存泄露的技巧摘要本文分析了Windows环境使用MFC调试内存泄露的技术,介绍了在Windows环境下用VC++查找,定位和消除内存泄露的方法技巧。关键词:VC++;CRT调试堆函数;试探法。编译环境VC++。若要启用调试堆函数,请在程序中包括以下语句:#defineCRTDBG_MAP_ALLOC#include#include注意#include语句必须采用上文所示顺序。如果更改了顺序,所使用的函数可能无法正确工作。,将malloc和free函数映射到其“Debug”版本_malloc_dbg和_free_dbg,这些函数将跟踪内存分配和释放。此映射只在调试版本(在其中定义了_DEBUG)中发生。发布版本使用普通的malloc和free函数。#define语句将CRT堆函数的基版本映射到对应的“Debug”版本。并非绝对需要该语句,但如果没有该语句,内存泄漏转储包含的有用信息将较少。在添加了上面所示语句之后,可以通过在程序中包括以下语句来转储内存泄漏信息:_CrtDumpMemoryLeaks(;当在调试器下运行程序时,_CrtDumpMemoryLeaks将在“输出”窗口中显示内存泄漏信息。内存泄漏信息如下所示:Detectedmemoryleaks!Dumpingobjects->C:(20:{18}normalblockat0x00780E80,:< >#define_CRTDBG_MAP_ALLOC语句,内存泄漏转储如下所示:Detectedmemoryleaks!Dumpingobjects->{18}normalblockat0x00780E80,:<>,所显示的会是:内存分配编号(在大括号内)。块类型(普通、客户端或CRT)。十六进制形式的内存位置。以字节为单位的块大小。前16字节的内容(亦为十六进制)。定义了_CRTDBG_MAP_ALLOC时,还会显示在其中分配泄漏的内存的文件。文件名后括号中的数字(本示例中为20)是该文件内的行号。转到源文件中分配内存的行在"输出"窗口中双击包含文件名和行号的行。-或-在"输出"窗口中选择包含文件名和行号的行,然后按F4键。_CrtSetDbgFlag如果程序总在同一位置退出,则调用_CrtDumpMemoryLeaks足够方便,但如果程序可以从多个位置退出该怎么办呢?不要在每个可能的出口放置一个对_CrtDumpMemoryLeaks的调用,可以在程序开始包括以下调用:_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF;该语句在程序退出时自动调用_CrtDumpMemoryLe