Palm Programmer's Laboratory

トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

【SDK】MemPtrNew のサイズ上限について

[開発情報]

概要

 このページでは、Palm OS SDK における MemPtrNew のサイズ上限、およびその上限よりも大きなサイズのメモリチャンクを確保する方法について説明します。

 

説明

 Palm OS API Reference の MemPtrNew の説明には、以下のように書かれています。

This routine allocates a nonmovable chunk in the dynamic heap and returns a pointer to the chunk. Applications can use it when allocating dynamic memory. Note that chunks range in size from 1 byte to slightly less than 64KB; you cannot allocate a single chunk larger than this.

 つまり、MemPtrNew はパラメータとして UInt32 の値をとるにもかかわらず、1byte 〜 64KB までのメモリしかアロケートできないということになります。一方、再配置可能なメモリブロックを確保する MemHandleNew にはこのような記述はありません。しかし、Palm OS 5( Simulator あるいは実機 )で確認したところ、MemHandleNew でも 64KB以上のメモリは確保できないようです。

 一方、PalmOSGlue Library に含まれる MemGluePtrNew( ) にはこのような制限はありません。Palm OS API Reference の MemGluePtrNew の項目には以下のように書かれています。

Allocate a new nonmovable chunk in the dynamic heap. Unlike MemPtrNew(), this function lets you request chunks larger than 64KB.

 つまり、MemPtrNew() とは異なり、64KB を超えるチャンクをリクエストできる、ということです。ただし、以下のようにも書かれています。Palm OS 3.5 未満ではこの API でも 64KB 制限ということになるようです。

On versions of Palm OS prior to 3.5, this function acts exactly like MemPtrNew() and won't allocate chunks larger than 64K.

 

参考情報

 このページの情報は、BBS-雑談掲示板/21にてご指摘いただいた内容をもとに書かれています。情報をくださった皆さんに感謝いたします。

 

コメント

お名前: コメント:


表示された文字列