Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

一个程序所适用的堆内存

From Wiki
Jump to: navigation, search
Article Metadata

兼容于
平台: S60 3rd Edition

平台安全性
需要的签名: Self-Signed
能力: None

文章
huwell 在 28 Jun 2007 创建
最后由 hamishwillee 在 20 Oct 2011 编辑
  • 设备, 软件 版本: S60 3rd Edition
  • 说明: 我的程序要多少堆内存才够用呢?
  • 详细描述:

在一台手机(或SDK的模拟器)上会有一定的物理内存大小,而你的应用程序将获取一部分做为堆内存使用。

当你程序启动后产生进程,会有一个预先分配的堆给其使用。S60第三版设备上缺省大小是4KB,早期的S60平台上是1KB。

根据需要,应用程序可以自由分配更多的堆内存,程序能使用的堆大小可在1M范围内动态增加,这是操作系统所规定最高极限了,呵呵。

如果试图分配的内存超过所能最大限制,将引发KErrNoMemory异常。

大部分Symbian C++程序在这样的堆内存安排下可以正常工作,但有时间我们需要更大的堆内存来工作。我们可以通过MMP文件中使用EPOCHEAPSIZE命令来指定最大和最小堆内存。 例如

TARGET MemoryTest.exe
TARGETTYPE exe
UID 0x00000000 KMemoryTestUID3
SECUREID KMemoryTestUID3
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.

This page was last modified on 20 October 2011, at 02:07.
269 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×