2006年02月01日

ヒープメモリについて

1)PIMクラスメソッドにおいて確保したヒープメモリの有効範囲
PIMAplSetupにおいてNewHeapPtrで確保したヒープメモリは、アプリケーション上でいつでも使用する事が可能か? 一度OUT状態になっても再びEXEC状態に戻れば、ヒープメモリが開放されたりメモリの内容が破壊されたりする事は無いと考えて良いか?

(2)この様にアプリケーションが常時使用するヒープメモリは、PIMAplConstructとPIMAplSetupのどちらで確保した方が良いのか?

(3)PIMクラスメソッドにおいて確保したヒープメモリの開放処理
 PIMAplConstruct又はPIMAplSetupで確保したヒープメモリを開放する場合は、PIMAplEndで行う必要があるか? それともOSに任せて、開放処理を行わない方が良いのか?

回答:

(1)OUT中でも保持されています。
ここでいうOUT中も保持されるヒープとは[PIMInfo->PIMAplWork]に設定したヒープです。

(2)どちらでも結構ですが、プログラミングガイド第8章のサンプルでは、PIMAplConstruct関数で確保しています。

(3)これらの関数内で確保すべき、OUT中も保持されるヒープの解放は、アプリ終了時にシステムが行います。ユーザーが解放する必要はありません。なお、ここでいうOUT中も保持されるヒープとは[PIMInfo->PIMAplWork]に設定したヒープです。


アプリケーションで使用する上記のようなヒープは、大まかに3種類あります。下記以外にも局所的に使用するワークとしてのヒープもあります。

・OUT中も内容が保持されるヒープ
 PIMAplConstruct または PIMAplSetUp関数で[PIMInfo->PIMAplWork]に設定したヒープです。主にレジュームするための情報を保持しておきます。ユーザーが解放処理をする必要はありません。

・EXEC中に保持されているヒープ(OUT中は不明)
 PIMExecConstruct または PIMExecSetUp関数で[PIMExecWork->PIMUserWork]に設定したヒープです。主に複数のフォーム間で共有する情報を保持しておきます。ユーザーがPIMExecEnd関数で解放処理を行います。

・フォーム実行中に保持されているヒープ(フォーム終了後は不明)
 FormConstruct または FormSetUp関数で[AplForm->UserWork]に設定したヒープです。主にフォーム実行中に参照したい内容を保持しておきます。ユーザーがFormEnd関数で解放処理を行います。
posted by シンビアン at 20:11| Comment(0) | TrackBack(0) | Symbian OS C++ 実践開発技法 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。