トップ 一覧 検索 ヘルプ RSS ログイン

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

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{category 開発情報}}
{{category 陰郎の書いた記事,nolink}}
!!概要
 このページでは、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]]にてご指摘いただいた内容をもとに書かれています。情報をくださった皆さんに感謝いたします。

 
//!!注意事項
// 
//
!!コメント
{{comment multi}}