GraphLib/ExGdata.h File Reference
メモリ管理機能付グラフィックデータ定義用ヘッダ  
More...
#include "Gdata.h"
Go to the source code of this file.
Detailed Description
- 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.