|
TNB Library
|
静的メモリ管理クラス [詳解]
#include <TnbStaticMemory.h>
公開型 | |
| enum | EResult { ER_Success , ER_ExistBank , ER_NotFoundBank , ER_OutOfMemory , ER_InvalidTell , ER_InvalidParam , ER_Locked } |
| リザルト [詳解] | |
公開メンバ関数 | |
| bool | Allocate (BYTE bank, size_t size) |
| [取得] メモリ確保 [詳解] | |
| CStaticMemory (const CStaticMemory &h) | |
| コピーコンストラクタ [詳解] | |
| CStaticMemory (void) | |
| コンストラクタ [詳解] | |
| void | Free (void) |
| [取得] メモリ解放 [詳解] | |
| LONG | GetJointlyCount (void) |
| [取得] 共有数取得. [詳解] | |
| DWORD | GetParam (void) |
| [取得] パラメータ取得 [詳解] | |
| size_t | GetSize (void) |
| [取得] 確保サイズ取得 [詳解] | |
| bool | HasMemory (void) |
| [確認] メモリ保持確認 [詳解] | |
| LPVOID | Lock (void) |
| [取得] アドレス取得&ロック. [詳解] | |
| CStaticMemory & | operator= (const CStaticMemory &other) |
| [代入] コピーオペレータ [詳解] | |
| void | SetParam (DWORD dwParam) |
| [代入] パラメータ設定 [詳解] | |
| void | Unlock (void) |
| [取得] アンロック [詳解] | |
| ~CStaticMemory (void) | |
| デストラクタ [詳解] | |
静的公開メンバ関数 | |
| static EResult | CreateBank (BYTE bank, DWORD dwSectorSize, WORD wSectorCount) |
| [設定] バンク作成. [詳解] | |
| static EResult | DeleteBank (BYTE bank, bool boIsForce=false) |
| [設定] バンク削除. [詳解] | |
| static EResult | ResizeBank (BYTE bank, WORD wSectorCount=0) |
| [設定] バンクのりサイズ. [詳解] | |
静的メモリ管理クラス
サイズの異なるバンクを最大256個作成し、指定のバンクから指定のサイズずつ分配して 使用することが出来ます。 new/delete を繰り返すことによるメモリの分断や、 メモリ確保速度が気になる場合に使用することが出来ます。 インスタンスは、 Allocate() することで領域を確保できます。 あるいは確保しているインスタンスをコピーすることでも確保できます (この場合、同じ領域を参照している)。 確保している状態で Lock() をすることで実際のメモリアドレスが得られます。 不必要になれば、 Free() 、あるいはインスタンスをデストラクトします。 なお、 Lock() を Unlock() しないと、 ResizeBank() や DeleteBank() が出来なくなります。 逆にこれらを使わないのであれば、 Unlock() を使う必要は有りません。
おまけ(!)で、32BITのパラメータを持つことが出来ます。本クラスを関数の戻り値などに 使用する場合に、有効だと思います。
CStaticMemory::CreateBank(0, 1000, 10);// Bank0に 1000x10バイトのメモリ確保
;
CStaticMemory h1;
h1.Allocate(0, 1000); // Bank0から 1000byte確保
CStaticMemory h2 = h1; // h1 と h2 は同じメモリを参照
LPVOID P = h2.Lock(); // 実際のメモリアドレス取得&Lock
;
h2.Unlock(); // 使用後 Unlock(Bankを変更しないなら不必要)
|
TnbStaticMemory.h の 64 行目に定義があります。
| enum EResult |
リザルト
| 列挙値 | |
|---|---|
| ER_Success | 成功 |
| ER_ExistBank | すでにバンクがあります。 |
| ER_NotFoundBank | バンクが見つかりません。 |
| ER_OutOfMemory | メモリが足りません。 |
| ER_InvalidTell | 不正なTELLです。 |
| ER_InvalidParam | 不正なパラメータです。 |
| ER_Locked | ロックされています。 |
TnbStaticMemory.h の 69 行目に定義があります。
| ~CStaticMemory | ( | void | ) |
デストラクタ
TnbStaticMemory.h の 668 行目に定義があります。
| CStaticMemory | ( | void | ) |
コンストラクタ
TnbStaticMemory.h の 674 行目に定義があります。
| CStaticMemory | ( | const CStaticMemory & | h | ) |
| bool Allocate | ( | BYTE | bank, |
| size_t | size | ||
| ) |
[取得] メモリ確保
| bank | バンク |
| size | サイズ |
| true | 成功。 |
| false | 失敗。 |
TnbStaticMemory.h の 761 行目に定義があります。
|
static |
[設定] バンク作成.
指定バンクの確保サイズを設定
| bank | バンク |
| dwSectorSize | セクタサイズ。16以上 |
| wSectorCount | セクタ数。10以上 32768未満 |
| ER_Success | 成功 |
| ER_ExistBank | すでにバンクがあります。 |
| ER_OutOfMemory | メモリが足りません。 |
| ER_InvalidTell | 不正なTELLです。 |
| ER_InvalidParam | 不正なパラメータです。 |
TnbStaticMemory.h の 628 行目に定義があります。
|
static |
[設定] バンク削除.
指定バンクの開放
| bank | バンク |
| boIsForce | 省略すると、 Lockチェックを行います。 true を指定すると、LockされていてもBankをDeleteします。 |
| ER_Success | 成功 |
| ER_NotFoundBank | バンクが見つかりません。 |
| ER_Locked | ロックされています。 |
TnbStaticMemory.h の 643 行目に定義があります。
| void Free | ( | void | ) |
| LONG GetJointlyCount | ( | void | ) |
[取得] 共有数取得.
インスタンスをコピーすると、共有数が+1されます。 1の時、Free()かデストラクトすると、メモリが解放されます。
TnbStaticMemory.h の 733 行目に定義があります。
| DWORD GetParam | ( | void | ) |
| size_t GetSize | ( | void | ) |
[取得] 確保サイズ取得
| 0 | 確保していない。 |
| 0以上 | 確保Byte数 |
TnbStaticMemory.h の 808 行目に定義があります。
| bool HasMemory | ( | void | ) |
| LPVOID Lock | ( | void | ) |
[取得] アドレス取得&ロック.
| NULL | エラー(カウンタは+1しません) |
| NULL以外 | アドレス |
TnbStaticMemory.h の 825 行目に定義があります。
| CStaticMemory & operator= | ( | const CStaticMemory & | other | ) |
|
static |
[設定] バンクのりサイズ.
| bank | バンク |
| wSectorCount | 変更したいセクタ数。省略可能。 |
| ER_Success | 成功 |
| ER_NotFoundBank | バンクが見つかりません。 |
| ER_OutOfMemory | メモリが足りません。 |
| ER_InvalidParam | 不正なパラメータです。 |
| ER_Locked | ロックされています。 |
TnbStaticMemory.h の 662 行目に定義があります。
| void SetParam | ( | DWORD | dwParam | ) |
| void Unlock | ( | void | ) |