×
Namespaces

Variants
Actions

一个程序所适用的堆内存

From Nokia Developer 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.
91 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.

×