My Project
1.00
|
構成 | |
class | OrgSys::Memory::IMemorySystem |
メモリシステム共通インターフェイス [詳細] | |
変数 | |
const u16 | OrgSys::Memory::cBlockMemoryUnit = 16 |
アライメント及びサイズの最小単位 | |
const u8 | OrgSys::Memory::cAllocFillCodeValue =0xcd |
alloc時のFILL時の値(デバッグ用) | |
const u8 | OrgSys::Memory::cFreeFillCodeValue =0xfd |
free時のFILL時の値(デバッグ用) | |
メモリシステムは様々なメモリアロケーションタイプを統一形式で扱う為のインターフェースクラスです。
メモリの確保や解放などを全て同じ形式で取り扱えます。
コンストラクタやデストラクタなど new や delete のオーバーライドとして利用することで簡素ですっきりした独自のメモリ管理を実現する事ができます。
例えば new / delete は
を用意する事で、通常のnew / deleteを差し替える事ができます。
IMemory は各種メモリシステムが共通で持つメソッドをまとめたインターフェイスクラスです。
IMemory はその実装クラスによって特徴が大きく変化します。
メモリープールの種類
クラス名 | 名称 | 用途 | 速度 | 断片化耐性 |
---|---|---|---|---|
dlMallocMemory | dlmallocメモリ | 通常プログラム、データ用 | 普通 | ややしやすい |
externalMcbMemory | 外部メモリ | CPUが直接アクセスできないメモリの管理 | 低速 | 普通 |
fixedSizeMemory | 固定サイズ割当メモリ | 固定サイズの割当て | 超高速 | 断片化しない |
メモリシステムの作成
IMemory クラスを継承して各種メモリクラスに組み込む事で作成されます。
メモリシステムからのメモリ確保/解放
メモリからの確保は IMemory::mallocAlignment を使用します。 解放に関しては IMemory::free を使用します。
ここで注意しないといけないのは、確保と解放は同種のメモリシステム上で行う必要があります。
異なるメモリシステムで解放等を行うとメモリが破壊される恐れがありますので注意が必要です。