1 / 3
文档名称:

内存泄露检测.doc

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

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

分享

预览

内存泄露检测.doc

上传人:小雄 2021/11/28 文件大小:84 KB

下载得到文件列表

内存泄露检测.doc

相关文档

文档介绍

文档介绍:检测内存泄漏的主要工具是调试器和C运行时库(CRT)调试堆函数。若要启用调试堆函数,请 在程序中包括以下语句:
d复制代码
^define _CRTDBG_MAP_ALLOC
^include <stdlib. h>
^include <crtdbg. h>
彳注意
ttinclude语句必须采用上文所示顺序。如果更改了顺序,所使用的函
数可能无法正确工作。
通过包括crtdbg. h,将malloc和free函数映射到其“Debug”版本 malloc dbg和 _free_dbg,这些函数将跟踪内存分配和释放。此映射只在调试版本(在其中定义了 _DEBUG)中 发生。发布版本使用普通的malloc和free函数。
ttdefine语句将CRT堆函数的基版本映射到对应的“Debug”版本。并非绝对需要该语句,但如 果没有该语句,内存泄漏转储包含的有用信息将较少。
在添加了上面所示语句之后,可以通过在程序中包括以下语句来转储内存泄漏信息:
至复制代码
_CrtDumpMemoryLeaks ();
当在调试器下运行程序时,—CrtDumpMenioryLeaks将在“输出”窗口中显示内存泄漏信息。内存 泄漏信息如下所示:
匪复制代码
Detected memory leaks!
Dumping objects ->
C:\PROGRAM FILESWISUAL
STUDIO\MyProjects\leaktest\leaktest. 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.
如果没有使用#define _CRTDBG_MAPALLOC语句,内存泄漏转储将如下所示:
君复制代码
Detected memory leaks!
Dumping objects ->
{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.
未定义_CRTDBG_MAP_ALLOC时,所显示的会是:
内存分配编号(在大括号内)。
块类型(普通、客户端或CRT)。
十六进制形式的内存位置。
以字节为单位的块大小。
前16字节的内容(亦为十六进制)。
定义了 _CRTDBG_MAP_ALLOC时,还会显示在其中分配泄漏的内存的文件。文件名后括号中的数 字(本示例中为20)是该文件内的行号。
转到源文件中分配内存的行
在"输出”窗口中双击包含文件名和行号的行。
-或-
在"输出”窗口中选择包含文件名和行号的行,然后按F4键。
_CrtSet