メモリ管理機能付グラフィックデータ定義用ヘッダ
More...
Go to the source code of this file.
- Author
- Fumi.Iseki
メモリ管理機能
- メモリ管理を付ける事の利点:
- 色々な関数(クラス)から同時に使用(兼用)できるので,メモリの節約になる.メモリが沢山(無尽蔵に) あるのなら,その都度コピーして渡した方がアルゴリズムは簡単.
- 手法:
- メモリ(データ)に対して,ペアとなるint型の参照数変数を用意し,メモリへの参照数を参照数変数に格納する. そのため operator= をオーバーロードする.
メモリ管理機能の無い変数から代入される場合は,予め参照数変数を結合しておかないと,メモリ管理 機能無しの状態になる.
例えば,msgにメモリ管理機能を持たせるには,以下のようにする. int ref;
ExMSGraph<> msg;
msg.setRefer(&ref);
msg = vp;
また,以下の場合 xpがメモリ(データ)を持つ時は注意. ExMSGraph<> msg;
msg = xp;
msg = vp;
msgは xpの参照数変数を引き継ぎ,メモリ(データ)管理機能付変数となる.
msgのメモリ部(データ)が空の場合,msg = vp; では,引き続き参照数変数を使用して, vpのメモリ(データ)を管理する.
msgにメモリ(データ)が存在する場合,msg = vp; でmsgはそのメモリ(データ)への参照を止め,vp をコピーする.
すなわち,この場合はメモリ管理機能なしになる.
つまり,xpがメモリ(データ)を持たなければ,xp, msgの参照数変数は 1になり,msgは vpのメモリを管理する.
xpがメモリを持っていれば,msgはメモリ管理機能なしになる.
- 参照数変数
- 1以上 : メモリ(グラフィックデータ)が存在し,参照されている.
- 0 : メモリ(グラフィックデータ)は存在するが,どこからも参照されていない. 通常この状態は一時的であり,次のステップで 1 か -1になる.
- -1 : メモリ(グラフィックデータ)は存在しない.
- -2以下 : 通常この状態は -1 に戻される.
- Attention
- ディストラクタはメモリを解放しないので,必ず手動で解放すること.
Definition in file ExGdata.h.