Windows CE 上的内存泄露检测

 

Windows CE 内存泄露检测

 

同许多平台一样,内存泄露是始终是一个让程序员头疼的问题。

下面以一段简单的代码来介绍下如何快速检测到内存泄露。

void func() { char *p1 = new char[256]; delete p1; char *p2 = new char[512]; } int _tmain(int argc, _TCHAR* argv[]) { func(); return 0; }   

生成pdb文件,Debug模式下是默认生成的,Release需要手动设置。

 

 

 

 

 

 

 

下面是Codesnitch的简要使用方法,同样以上面的代码为例子。

1.       登陆http://entrek.com/evalform.asp 注册试用账号,随便填就行了,但是邮箱不能随便写。

Windows CE 上的内存泄露检测_第1张图片

2.       不久后邮箱就会收到一封e-mail,有注册码,即试用版下载地址。  使用版能使用15天,且只能追踪到前50个事件。

或者 http://www.entrek.com/products/codesnitch_std.msi

         http://www.entrek.com/products/codesnitch_std.msi

3.       下载安装完成后运行程序,PC同步连接上WinCE/Windows Mobile设备,点击File/Run从设备上选择程序运行。

4.       等程序运行完后,首先看到的是Event窗口,记录了每一次内存操作事件。选择事件,还可以对应到响应源代码的哪一行。例如本例子的11: char *p1 = new char[256];,配了256字节。

5. Summany 窗口记录了一些统计信息。例如一共有多少次new,多少次delete。内存最大使用等等,一目了然。

Windows CE 上的内存泄露检测_第2张图片

6.       退出程序后,Results窗口会显示本次程序运行结果的内存泄露信息。

我们可以清楚的看到显示“Memory leak”,可以清楚的看到是第13行,分配了512的内存空间后,并没有释放,造成了内存泄露。

Windows CE 上的内存泄露检测_第3张图片

 

有了Codesnitch后,使得我们很快能够准确的找出内存泄露发生的位置,迅速排除问题,提高了开发效率和程序的健壮性。

像上述代码内存泄漏比较少,而且不会运行时间很长的话,因为在程序退出的时候,OS会回收app所占用的内存,但是如果一个app长期运行,且不断有内存泄露的话,在WinCE这类系统资源很有限的情况下,很容易导致程序崩溃,或者更严重的问题。养成良好的编程习惯才是关键。

你可能感兴趣的:(编程,windows,delete,mobile,leak,WinCE)