2012-02-20 12 views
0

メモリ管理がBADA OSでどのように行われているかの詳細を知ることは非常に困難です。BADAでのメモリ管理

誰もがそれについてのすべての情報を持っているか、同様のメモリ管理に概念を持っているすべてスマートフォンをするのでしょうか?

答えて

1

BADAのメモリ管理は、の従来のC++メモリ処理ポリシーに従います。

スタティックメモリ

アプリは常にそれが割り当てメモリを削除する責任があるとの間で分割され、実行時にBADAで

メモリ(新へのすべての呼び出しは、削除する 対称コールを持っている必要があります) :コンパイラによって割り当てられ、実行時にアプリケーションバイナリの一部です。

スタックメモリ:割り当てられたプログラムによって要求され、動的に解放された:実行中のプログラムの機能の活性化フレームが作成され、

ヒープメモリをリリースされるOSによって実行時に割り当てられ及び解放。

オブジェクト所有責任

メモリ割り当てに関するさらに小さいが重要な、複雑かつ 建設オブジェクト時々フレームワークメソッドが割り当てると 呼び出し側アプリケーションに新しいオブジェクトを返すためのフレームワークを必要とすることです。

ただし、オブジェクトがフレームワークによって返され、オブジェクトが呼び出し元の所有者に渡されると、フレームワークはオブジェクトの終了時を知らなくなります。

この場合、メモリを割り当てて解放するという単純なルールは、常に対称的に行われなくなります( )。

アプリプログラマーの問題は、アプリケーションまたは フレームワークが特定のオブジェクトをクリーンアップする必要があるかどうかを知ることです。この問題は、単純な命名規則によってBADAのほぼ自明解決さ

、例えばメソッド名に 関連ルール

条約

末尾「N」、:Sometype() SomethingN()

ルールに

呼び出し元は、フレームワークメソッド の末尾に 'N

+0

という名前で指定されたオブジェクトを削除する責任を常に負います。 'new'でコントロールを割り当てて、それらをコンテナ(つまりPanel)に追加すると、所有権を放棄します。このフレームワークは、UIが解体されたときにそれらを解放します。また、IList :: RemoveAll(true)は、含まれているすべてのオブジェクトを解放します。 –

1

badaでのプログラミングは、主にヒープメモリを処理する必要があります。 bada-APIのいくつかのクラスでは、自動メモリ管理(Osp::Base::Collection)を使用して、必要ならばその要素のメモリを解放することができます。Osp::Ui::ContainerのメソッドRemoveControl()は彼の子供のメモリを解放します。

しかし、一般的なケースでは、自分でハンドルメモリを解放する必要があります。