Windows Mobile 5.0 下的GWES.EXE错误
在Windows Mobile 5.0的设备上进行开发,最怕见到这个所谓的GWES.EXE Error。因为程序出现该错误,程序几乎不能正常运行,而且对于开发者来说,系统给出的错误报告,没有几个会看懂的,即不知道程序中的哪个地方出现了问题;而且一旦出现这个错误,即使随后的程序仍能运行,也会经常跳出那个错误报告,一个字烦。而在Windows Mobile 5.0以前的系统上,很少会看到这个错误信息。
(BTW在开发基于Windows Mobile 5.0的应用程序的时候,应先检查下,设备上的"错误报告"是否关闭,如果关闭了,就不会跳出以上的错误报告信息,但是一旦开启,程序运行的时候就会出现问题,比如弹出那个错误信息。检查的方法:(PPC)开始——〉设置——〉系统——〉错误报告——〉启动错误报告)
下面是我在开发的过程中,会出现GWES.EXE Error的几个方面,来个抛砖引玉:
1、一个字符串的内存空间不是通过mallo/new分配的,如可能是复制另一个字符串的,但是在程序中的某个地方,却用free/delete将其回收。
2、如果是动态申请的空间,如果没有回收,在做Hopper Test的会出现问题;创建的资源如字体、画刷等,没有删除,会产生内存的泄漏,长时间运行程序,也会产生GWES.EXE Error。
3、CFont BoldFont;
BoldFont.CreateFont(0, 0, 0, 0,FW_SEMIBOLD,
false, false, false, DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH|FF_DONTCARE,
_T("黑体"));
CFont *pOldFont;
pOldFont = pDC->SelectObject(&BoldFont);
// do Something
pDC->SelectObject(pOldFont);
BoldFont.DeleteObject();
// 之后没有再对默认的字体进行修改
pDC->SelectObject(pOldFont); //
就是因为重复了这个,一运行程序,马上出现GWES.EXE Error。
……(待补充)
目前,想到就这些,欢迎补充!
可见,这种错误都是粗心造成的,只要认真审查下代码,就会避免出现这种错误。