开发学院手机开发Symbian 开发 symbian 内存泄露检查心得 阅读

symbian 内存泄露检查心得

 2010-06-03 01:25:00 来源:WEB开发网   
核心提示:Symbian软件开发到了一个阶段,内存泄露检查是必须要做的,symbian 内存泄露检查心得,因为Symbian提供了严格的内存检查机制,有任何内存泄露,先写这么多,还有很多没有遇到过的问题,程序退出或运行过程中会弹出提示,如果置之不理

Symbian软件开发到了一个阶段,内存泄露检查是必须要做的,因为Symbian提供了严格的内存检查机制,有任何内存泄露,程序退出或运行过程中会弹出提示。如果置之不理,签名时必然过不了。

Symbian系统有非常好的内存泄露检查工具HookLogger,上一篇文章已经详细的介绍了安装及使用方法,这里不再赘述。今天主要介绍下代码中容易出现内存泄露的地方,记录一下心得体会。

一,Symbian系统采用C++语言,像所有C++一样,new完之后没有delete,依然是代码中出现内存泄露的主要原因。这需要有良好的编码习惯与扎实的编程基础才能避免。每一个类,函数中的指针一定要仔细检查,如果从堆中分配过内存,一定要在适合的地方释放,成员指针最好在构造中置空,在析构中释放,免得忘记。

char *p =NULL

if (!p)

p = new char[6];

.............

if (p)

{

delete p;

p = NULL;

}

以上是很好的编码风格,如果直接delete p,会发生很多不可预知的问题。

二,CTypefaceStore -14 错误。

GetNearestFontInTwips和ReleaseFont必须成对出现,

使用CGraphicsDevice及其集成类的GetNearestFontInTwips 等方法创建自定义字体的时候,

使用完字体要调用一下ReleaseFont 释放 该字体。

类似函数还有GetNearestFontToDesignHeightInTwips(), GetNearestFontToMaxHeightInTwips(),

如果是CFbsDevice等,还有这些函数

GetFontById()

GetNearestFontToMaxHeightInPixels()

GetNearestFontInPixels()

GetNearestFontToDesignHeightInPixels()

GetNearestFontToMaxHeightInPixels()也需要relesefont

三,RPointerArray是Symbian中特有的数据类型,实际上它是一个class,内部返回一个Array的一个指针。 RPointerArray有非常好的释放内存的方法ResetAndDestroy(),这个函数可以多次使用,安全的释放RPointerArray 的内存。但有一种情况,如果array中Append的是new过的一个指针,这个指针有可能是个Class,也可能是个struct,Class或 struct中有堆中分配的内存,则这些内存需要手动释放。

四,描述符的使用。Symbian的描述符和C++的String操作还是有很多不同,有很多内部规则,如HBufC8的使用,AllocL的使用等等,需要深刻理解内部机制,写出的代码才会足够健壮。

先写这么多,还有很多没有遇到过的问题,想起来再添上。

Tags:symbian 内存 泄露

编辑录入:coldstar [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
更多精彩
    赞助商链接

    热点阅读
      焦点图片
        最新推荐
          精彩阅读