Windows mobile下内存泄露检测

windows  mobile下内存检测,一些工具如AppVertifyer等其实检测效果并不佳,而更多的是需要程序员在编写代码过程中注意加入检测代码, 以下这个类可以当做检测windows mobile下内存,主要是对new 、delete进行重写,然后在需要检测的文件中添加宏定义。

 

crtdbg.h头文件代码如下:

 

crtdbg.cpp代码如下:

 

 

然后在程序的main函数里添加_CrtSetDbgFlag (ON); 其实这是一个#define _CrtSetDbgFlag(ignore) /
  garbageCollector gb; 这样的定义 , 在程序退出的时候会调用garbageCollector 的析构函数,crtdbg.cpp中有定义全局变量负责管理我们程序中分配的内存,这样子当garbageCollector 析构的时候会调用这些全局变量来判断new的内存是否有delete掉。

 

不纺做个测试:

 

#include "crtdbg.h"
#define new new(_T(__FILE__), __LINE__)

 

int WINAPI WinMain( HINSTANCE hInstance,
     HINSTANCE hPrevInstance,
     LPTSTR    lpCmdLine,
     int       nCmdShow)
{
  // TODO: Place code here.
 _CrtSetDbgFlag (ON);
 int* p = new int;
 return 0;
}

 

程序输出:

Detected memory leaks!
Dumping objects ->
d:/eclipse3.4.3/ce_leakdemo/crtdbg.h(95) : normal block at 0x00030060, 4 bytes long
 Data <>
./test.cpp(24) : normal block at 0x00030100, 4 bytes long
 Data <>
Maximum free store memory allocated at a time: 8!

 

 

我在windows mobile上调试这个类是要在项目属性的c/c++ ---》语言-->将wchar_t设置为内置类型设置为否编译才通过

 

一般来说

#include "crtdbg.h"
#define new new(_T(__FILE__), __LINE__) 这两行要加在所有include头文件的最后面,这样不会影响到你所包含的头文件里的new、delete的调用,但如果你乐意也可以,呵呵。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值