=============================================================
标题:检测由new/delete使用不当引起的内存泄露
备注:wince
日期:2011.5.4
姓名:朱铭雷
=============================================================
以前在网上看到过wince下可用的检测new/delete的小程序,不过好像在mfc下使用还有点问题。但实在是不记得文章的名字了,也没有找到原文地址。先前开会时,同事也提到了这个事情,一定要严防memory leak。所以凭着一点记忆和对new/delete的一点简单理解,勉强写了这么一个简陋的检测程序。不过这份简陋的程序还是起了作用的,它比较擅长的就是当项目越来越大时,new出来的内存忘记delete,或者是由于没有对某些跳转返回考虑周全而使程序在某些情况下越过了delete,亦或是某些时候这个内存需要同事来释放而双方又没有去沟通时等等产生的内存泄露。正是这份极为简陋的程序,检测出了我们当前项目中几处极为严重的内存泄露,特别是其中一处,几乎是每次执行该功能就会泄露将近1M的宝贵内存。由于这份程序基本上是凭着记忆“参考”网上那位无名大侠的(记得是codeproject上看到的),所以在这里表示感谢。也希望看到俺这篇日记的朋友,能够给点意见,帮助修改错误,填补不足,抑或是这段程序从根本上就是不对的话,重构一个。我实在是实力和时间都不足,希望搞wince的朋友们群策群力,多共享些好用的工具,帮助大家更好的工作。
下面是这份程序检测到内存泄露,将信息写到了vs的输出窗口:
双击所输出的内存泄露信息,将会跳转到引起内存泄露的相应文件的相应代码行:new_delete_memleak_v11Dlg.cpp文件的第68行。
下面是相关的3个文件的源代码:
使用方法应该是非常简单的,可以在stdafx.h头文件中加入#include "Ce_MemLeak_Debug.h",在需要的.cpp文件中加入#include "Ce_MFC_debug.h"。之后充分!运行程序。在程序退出时,就会将“内存泄露信息”写到Debug输出窗口。