WEB开发网
开发学院手机开发Symbian 开发 Symbian OS C++程序员编码诀窍-系统资源的使用(R... 阅读

Symbian OS C++程序员编码诀窍-系统资源的使用(ROM 和 RAM)

 2010-09-06 08:12:00 来源:WEB开发网   
核心提示:目标硬件上某个应用可用的堆栈比起 Windows NT 环境中模拟器可用的巨量堆栈来要小得多,结果是:在WINS模拟器中能良好运行的代码在硬件中却不能运行,Symbian OS C++程序员编码诀窍-系统资源的使用(ROM 和 RAM)(3),而且出现很明显的随机性严重提示( panic),减少堆栈使用并不容易,可以使

目标硬件上某个应用可用的堆栈比起 Windows NT 环境中模拟器可用的巨量堆栈来要小得多。结果是:在WINS模拟器中能良好运行的代码在硬件中却不能运行,而且出现很明显的随机性严重提示( panic)。减少堆栈使用并不容易,但还是需要引起密切的关注。

正确使用描述符

有两种类型的描述符,即堆描述符(HBufC)和栈描述符(HBufC)。所有的描述符都使用其中之一来储存。当栈溢出时,90%时间是由栈中大型的描述符引起的。小心对待那些将导致隐含复制描述符的那些操作,并尽可能避免这种情况的出现。在某些情况下,最好分配 Hbuf C s,而不是Tbufs。某些相关的Symbian OS 类,如 Tparse,也能开销掉许多栈空间。可以考虑使用那些耗费栈空间较少的版本(如:TParseBase)。

向描述符传参数比传值更好。

小心使用递归,在限度内生成

如果需要递归程序,请注意栈需求。应该努力降低向下传递的参数的大小,并力图将本地自动变量移出该函数的递归部分。尽可能地在递归限制深度内生成(build)代码,以免栈溢出。

注意登录代码

登录代码往往涉及到对超长描述符及将其写入到文件中的格式化工作。由于这一理由,它们往往成为栈溢出的原因。

盘容量降低的处理

对闪存文件系统(Flash File System,FFS,其别名是 C:驱动器)上可用自由空间的监测系统,我们定义了两个级别:警示级(Warning Level,WL)和临界级(Critical Level,CL)。当自由磁盘空间遇到这些级别中的一个时,系统(EikSrvUI)将显示一个全局提示,向用户发出有关当前情势的警示。此后各种应用程序和服务器就忽略掉警示级而专注于临界级。所有对磁盘文件以已知的文件尺寸进行创建或写入操作都必须首先以那个尺寸作为方法 FFSSpaceBelowCriticalLevelL的参数来检查临界级。如果磁盘空间已经很低,或者说已经低于临界级,这个方法就会返回 Etrue。应用程序就不能再进行写入操作,同时通知用户,磁盘已满。(用 KerrDiskFull出错代码作异常退出可以达到这个目的。)

所有对磁盘文件以一个不知的文件尺寸进行创建或写入操作都必须先检查临界级,向方法FFSSpaceBelowCriticalLevelL传递一个合适的预估尺寸或‘0’(默认)作为参数。这里的‘0’可用于检查是否已经低于临界级了。比较麻烦的情况是在几个数据库(如联系人)中创建单一项目。在这些情况中,可以使用一个预估值,用作因添加该项目而需要的数据库尺寸增量。SysUtil.h/SysUtil.dll中有临界级检查方法。其

上一页  1 2 3 4  下一页

Tags:Symbian OS 程序员

编辑录入:coldstar [复制链接] [打 印]
赞助商链接