Symbian 开发的一些小技巧
2010-05-31 19:44:00 来源:WEB开发网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堆栈,这需要为此重新编译。
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››一些php常用代码
- ››开发者眼中的Windows Phone和Android
- ››Symbian S60 SocketConnection参数
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
更多精彩
赞助商链接