nlib
nn::nlib::heap::UnitHeap クラスfinal

固定メモリサイズの領域を確保・解放するためのヒープです。所謂プールアロケータです。 [詳解]

#include "nn/nlib/heap/UnitHeap.h"

公開型

typedef void(* DestructorHandler) (void *start, void *end)
 UnitHeapのデストラクタで呼ばれる関数の型です。
 

公開メンバ関数

errno_t Initialize (void *start, size_t size, DestructorHandler handler, size_t unit, size_t algn, uint32_t heap_option) noexcept
 ユニットヒープを初期化します。 [詳解]
 
void * Alloc () noexcept
 メモリブロックを確保します。 [詳解]
 
errno_t Free (void *p) noexcept
 メモリをヒープに返却します。 [詳解]
 
size_t GetUnitSize () const noexcept
 このヒープからアロケートされる領域の1つあたりのサイズを返します。 [詳解]
 
size_t GetUnitCount () const noexcept
 このヒープからアロケートできる領域の個数を返します。 [詳解]
 
size_t GetAllocatedCount () const noexcept
 現在このヒープから確保されている領域の個数を返します。 [詳解]
 
void Dump () noexcept
 ヒープの状態をダンプします。
 

詳解

固定メモリサイズの領域を確保・解放するためのヒープです。所謂プールアロケータです。

UnitHeap.h17 行目に定義があります。

関数詳解

nn::nlib::heap::UnitHeap::Alloc ( )
noexcept

メモリブロックを確保します。

戻り値
確保されたメモリへのポインタ。失敗した場合はNULL
nn::nlib::heap::UnitHeap::Free ( void *  p)
noexcept

メモリをヒープに返却します。

引数
[in]p解放する領域へのポインタ
戻り値
0ならば成功。0以外の場合はポインタが不正です。
nn::nlib::heap::UnitHeap::GetAllocatedCount ( ) const
inlinenoexcept

現在このヒープから確保されている領域の個数を返します。

戻り値
現在確保されている領域の個数

UnitHeap.h34 行目に定義があります。

nn::nlib::heap::UnitHeap::GetUnitCount ( ) const
inlinenoexcept

このヒープからアロケートできる領域の個数を返します。

戻り値
このヒープから確保できる領域の個数を返します。
説明
GetUnitCount() - GetAllocatedCount()が現在割り当て可能な領域の数です。

UnitHeap.h33 行目に定義があります。

nn::nlib::heap::UnitHeap::GetUnitSize ( ) const
inlinenoexcept

このヒープからアロケートされる領域の1つあたりのサイズを返します。

戻り値
領域のサイズ

UnitHeap.h32 行目に定義があります。

nn::nlib::heap::UnitHeap::Initialize ( void *  start,
size_t  size,
DestructorHandler  handler,
size_t  unit,
size_t  algn,
uint32_t  heap_option 
)
noexcept

ユニットヒープを初期化します。

引数
[in]startヒープの開始位置へのポインタ
[in]sizeヒープのサイズ
[in]handlerデストラクタ実行時に呼び出される関数へのポインタ
[in]unit割り当てられる領域1つあたりのサイズ
[in]algn領域のアライメント
[in]heap_option値は利用されません
戻り値
初期化に成功した場合は0, それ以外の場合は失敗。
説明
プールアロケータが通常保持するフリーリストの初期化は、実際にメモリが確保され解放されるまで遅延されるので、大量のメモリをヒープに与えた場合でも比較的短時間で初期化を行うことができます。

このクラス詳解は次のファイルから抽出されました: