WEB开发网
开发学院手机开发Symbian 开发 Symbian 开发的一些小技巧 阅读

Symbian 开发的一些小技巧

 2010-05-31 19:44:00 来源:WEB开发网   
核心提示:VENDORID 0x00000000CAPABILITY NONEEPOCHEAPSIZE 0x5000 0x400000EPOCSTACKSIZE 0x5000....在上述代码中,应用程序描述了它所需要的最大和最小堆内存,Symbian 开发的一些小技巧(5),分别是0x5000字节 (20KB)和0x40000

VENDORID 0x00000000

CAPABILITY NONE

EPOCHEAPSIZE 0x5000 0x400000

EPOCSTACKSIZE 0x5000

....

在上述代码中,应用程序描述了它所需要的最大和最小堆内存,分别是0x5000字节 (20KB)和0x400000字节(4MB),现在该程序可以安全来分配一块3MB的堆空间。

Note: As documented, prior to S60 3rd Edition the EPOCHEAPSIZE statement has no effect on WINS32 platforms.

在上述代码中,应用程序描述了它所需要的最大和最小堆内存,分别是0×5000字节(20KB)和 0×400000字节(4MB),现在该程序可以安全来分配一块3MB的堆空间。Note: As documented, prior to S60 3rd Edition the EPOCHEAPSIZE statement has no effect on WINS32 platforms.在对一张使用逐行编码的JPG图片进行解码时,会出现“内存不够”的错误

详细描述:

在对使用逐行编码的JPG图片进行解码时将比对使用顺序编码的JPG图片解码占用更多内存。

列如当使用CImageDecoder类对一张较大的逐行编码JPEG进行解码时,CImageDecoder::Convert()将会获得KErrNoMemory(-4)错误。

应用程序增加堆的大小将有助于这类问题的解决,我们可以在.mmp文件中使用EPOCHEAPSIZE 命令进行调整,如:

EPOCHEAPSIZE 0×1000 0×200000

这样将初始化的堆大小从4KB(缺省)调整到2MB

解决方案:

我们可以通过在.mmp工程定义文件中使用epocstacksize命令行来修改缺省的 8KB大小。

epocstacksize stacksize

堆栈的大小,可以通过十六进制或十进制来指定。但这对 winscw/wins平台是无效的。

列如下面这行将堆栈大小增加到20KB

epocstacksize 0×5000

同样,我们也可以在产生新线程时定义该线程的堆栈大小。

S60第三版中最小缺省堆栈大小

说明:在S60第三版中缺省的堆栈大小只有8KB,这对大多数复杂程序来说是不够的

详细描述:

在symbian OS v9中缺省的堆栈大小从20kb缩减到8kb,以优化内存的消耗。这主要是因为平台安全性导致了在系统中同时运行的进程增多。

实际上,8kb的堆栈大小对任何一个稍大的S60程序来说都是不够的。如果在当前设备上缺省的堆栈能运行你的程序,那因为堆栈的溢出(平台库的消耗而引发堆栈的增长),它也很容易引发崩溃。在S60第三版SDK中建议所有程序都增长到20KB堆栈,这需要为此重新编译。

上一页  1 2 3 4 5 6  下一页

Tags:Symbian 开发 一些

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