| 状況 | 寿命 |
|---|---|
| グローバル変数を実体定義した時 | プロセスの終了まで |
| クラス共有変数を実体定義した時 | 所属するクラスオブジェクトと同じ |
| インスタンス変数を実体定義した時 | 所属するオブジェクトと同じ |
| ローカル変数を実体定義した時 | 定義したローカルスコープの終了まで |
| #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(){} //クリアラーの定義 } |