JunkBox_Lib++ (for Windows) 1.10.1
Loading...
Searching...
No Matches
ExGdata.h File Reference

メモリ管理機能付グラフィックデータ定義用ヘッダ
More...

#include "Gdata.h"
Include dependency graph for ExGdata.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  ExMSGraph< T >
 
class  ExCmnHead
 

Namespaces

namespace  jbxl
 

Detailed Description

Author
Fumi.Iseki

メモリ管理機能

メモリ管理を付ける事の利点:
色々な関数(クラス)から同時に使用(兼用)できるので,メモリの節約になる.メモリが沢山(無尽蔵に) あるのなら,その都度コピーして渡した方がアルゴリズムは簡単.
手法:
メモリ(データ)に対して,ペアとなるint型の参照数変数を用意し,メモリへの参照数を参照数変数に格納する. そのため operator= をオーバーロードする.
メモリ管理機能の無い変数から代入される場合は,予め参照数変数を結合しておかないと,メモリ管理 機能無しの状態になる.
例えば,msgにメモリ管理機能を持たせるには,以下のようにする.
int ref;
ExMSGraph<> msg;
msg.setRefer(&ref);
msg = vp; // vp: 管理機能無しの変数
また,以下の場合 xpがメモリ(データ)を持つ時は注意.
ExMSGraph<> msg;
msg = xp; // xp: 管理機能ありの変数
msg = vp; // 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.