解手链游戏寓意:轻松解决内存泄露(不依赖MFC),C++技术文章,C++系列教程,C++
来源:百度文库 编辑:九乡新闻网 时间:2024/04/26 09:31:37
首先,我们要清楚,VC编译器可以将跟踪内存分配情况的代码嵌入到目标程序的能力,这些代码的头文件就是crtdbg.h。当你使用MFC时,将它include之后,只需在程序刚开始执行的地方调用_CrtDumpMemoryLeaks(),调试一次程序,内存泄露的情况就会输出到“输出”窗口,详情见http://blog.csdn.net/HeavenMonkey/archive/2008/05/24/2476411.aspx。 如果你的程序没有使用MFC,也不想使用它,那么_CrtDumpMemoryLeaks()也可以用,但是“输出”窗口中的内存泄露条目是不支持双击定位的,也就是说,你只知道泄露了,但不能是哪一行代码引起的,这样达不到调试目标。 其实,crtdbg.h是不依赖于MFC的,只是对MFC支持很好。在这种情况下,可以采用以下方法定位泄露内存语句:1)程序开始处,加入: int nFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
nFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(nFlag); 以上三行使嵌入的调试线程开启内存分配跟踪,与调用_CrtDumpMemoryLeaks()相似,内存泄露的情况会被输出到“输出”窗口。仔细观察内存泄露的情况,会发现每个内存泄露前面,都有一个{n},n是一个整数,可以看成该信息的id,其实是说程序的第几次内存分配没有回收。2)在以上三行后面,加入:_CrtSetBreakAlloc(n); 其中n就是某一个内存泄露的id,调试一下,你会发现,程序停止在某一行,这就是对应该id分配的地方。然后就看你的了,解决它吧! 文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/c++/cppjs/2008827/137788.html
nFlag |= _CRTDBG_LEAK_CHECK_DF;
_CrtSetDbgFlag(nFlag); 以上三行使嵌入的调试线程开启内存分配跟踪,与调用_CrtDumpMemoryLeaks()相似,内存泄露的情况会被输出到“输出”窗口。仔细观察内存泄露的情况,会发现每个内存泄露前面,都有一个{n},n是一个整数,可以看成该信息的id,其实是说程序的第几次内存分配没有回收。2)在以上三行后面,加入:_CrtSetBreakAlloc(n); 其中n就是某一个内存泄露的id,调试一下,你会发现,程序停止在某一行,这就是对应该id分配的地方。然后就看你的了,解决它吧! 文章出处:飞诺网(www.firnow.com):http://dev.firnow.com/course/3_program/c++/cppjs/2008827/137788.html
轻松解决内存泄露(不依赖MFC),C++技术文章,C++系列教程,C++
errno.h错误代码,C 技术文章,C 系列教程,C
转:c/c++内存泄露
C语言系列教程
[转]Android编译环境(1) - 编译Native C的模块,Linux技术文章,Linux系列教程,Linux
Objective-C?内存管理
C/C++内存分配
C 内存管理
c程序内存分配
挑战30天C/C 入门极限系列教程
C教程、C++、C#教程、VC教程
ARM C C++内存对齐
C语言经典教程
明暗素描教程c
ps教程大全 c
c语言教程
C语言 内存管理详解 - C / C++ - 大家论坛
C/C++中的内存补齐机制
C系列文章和书籍
Photoshop教程8000例 c
C、C++和MFC中文件的读写方法
C、C++和MFC中文件的读写方法
茶艺基本知识 C c
C C interview questions :