状況 | 寿命 |
---|---|
グローバル変数を実体定義した時 | プロセスの終了まで |
クラス共有変数を実体定義した時 | 所属するクラスオブジェクトと同じ |
インスタンス変数を実体定義した時 | 所属するオブジェクトと同じ |
ローカル変数を実体定義した時 | 定義したローカルスコープの終了まで |
#New演算子を実行した時 | 左辺のメモリ管理オブジェクトと同じ |
@=LocalNew演算子を実行した時 | 左辺を定義したローカルスコープの終了まで |
retvalによって値返しした時 | 呼び出し元の文の終了まで(一時オブジェクト) |
定数を記述した時 | 記述した文の終了まで(一時オブジェクト) |
特殊値 | 意味 | 寿命 |
---|---|---|
FGES_MEMCTRL_INVALID | 管理外オブジェクト | 寿命が設定されていない。 この状態のオブジェクトにFGES上からアクセスできてはいけない。 |
FGES_MEMCTRL_EXTERN | C++管理オブジェクト | C++レベルで管理されているオブジェクト。 FGESメモリ管理外であり、C++レベルでの明示的な解放が必要。 この状態はネイティブメソッドでのみ設定可能。 |
FGES_MEMCTRL_SLAVE | 従属解放オブジェクト | 親オブジェクトと連動して消滅する。 インスタンス変数は通常これに設定される。 |
FGES_MEMCTRL_RELINK_REQUEST | 再設定要求 | 寿命変更処理の途中。 この状態のオブジェクトにFGES上からアクセスできてはいけない。 |
FGES_MEMCTRL_TEMPORARY | 一時オブジェクト | 一時的なオブジェクト。 設定された文の終了時に(一時オブジェクト解放命令によって)消滅する。 |
< 1> < 2> < 3> | method #Init(){} //イニシャライザの定義 } |
< 1> < 2> < 3> < 4> < 5> < 6> < 7> < 8> < 9> < 10> < 11> < 12> | var int n; method static SelfType@ New(editable INativeMemoryHost mem,IInteger value){ SelfType@ obj=mem#New SelfType; obj.n=value; retref obj; } } method void Use(){ MemoryHost mem; C@ c_obj=C::New(mem,5); } |
< 1> < 2> < 3> | method #Clear(){} //クリアラーの定義 } |