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

ヒープの両端からメモリを確保することができます。 [詳解]

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

クラス

struct  State
 ヒープの状態を記録しています。 [詳解]
 

公開型

enum  AllocOption {
  ALLOCOPTION_ALLOCHEAD = 0x00000000,
  ALLOCOPTION_ALLOCTAIL = 0x00000001
}
 アロケートをヒープのどちらがわから行うかを指定します。 [詳解]
 
typedef void(* DestructorHandler) (void *start, void *end)
 FrameHeap のデストラクタで呼ばれる関数の型です。
 

公開メンバ関数

errno_t Init (void *start, size_t size, DestructorHandler handler, uint32_t heap_option) noexcept
 フレームヒープを初期化します。 [詳解]
 
void FreeAll () noexcept
 メモリを全て解放し、ヒープを初期化直後の状態に戻します。
 
void FreeTop () noexcept
 ヒープの上部から確保したメモリを全て解放します。
 
void FreeBot () noexcept
 ヒープの下部から確保したメモリを全て解放します。
 
errno_t ResizeTop (void *p, size_t from_size, size_t to_size) noexcept
 最も最近に確保したメモリのサイズを変更します。 [詳解]
 
errno_t Adjust (void **start, size_t *size) noexcept
 ヒープのサイズを現在までに確保した領域まで切り詰めます。両端から確保済みの場合は切り詰められないので失敗します。 [詳解]
 
State SaveState () noexcept
 現在のヒープの状態をセーブします。 [詳解]
 
void RestoreState (State state) noexcept
 セーブしたヒープの状態に戻します。 [詳解]
 
void * Alloc (size_t n) noexcept
 メモリブロックを確保します。 [詳解]
 
void * Alloc (size_t n, size_t algn) noexcept
 アライメントを指定してメモリブロックを確保します。 [詳解]
 
void * Alloc (size_t n, size_t algn, uint32_t alloc_option) noexcept
 アライメントとアロケート時オプションを指定してメモリブロックを確保します。 [詳解]
 
void Dump () noexcept
 ヒープの状態をダンプします。
 

詳解

ヒープの両端からメモリを確保することができます。

FrameHeap.h16 行目に定義があります。

列挙型メンバ詳解

§ AllocOption

アロケートをヒープのどちらがわから行うかを指定します。

列挙値
ALLOCOPTION_ALLOCHEAD 

アロケートをヒープの先頭から行います。

ALLOCOPTION_ALLOCTAIL 

アロケートをヒープの末尾から行います。

FrameHeap.h19 行目に定義があります。

関数詳解

§ Adjust()

nn::nlib::heap::FrameHeap::Adjust ( void **  start,
size_t *  size 
)
noexcept

ヒープのサイズを現在までに確保した領域まで切り詰めます。両端から確保済みの場合は切り詰められないので失敗します。

引数
[in]startヒープから外される領域の開始位置へのポインタが格納されます
[in]sizeヒープから外される領域のサイズが格納されます。
戻り値
0ならば成功。それ以外の場合は失敗です。

§ Alloc() [1/3]

nn::nlib::heap::FrameHeap::Alloc ( size_t  n)
inlinenoexcept

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

引数
[in]nメモリブロックのサイズ
戻り値
確保されたメモリへのポインタ。失敗した場合はNULL

FrameHeap.h59 行目に定義があります。

§ Alloc() [2/3]

nn::nlib::heap::FrameHeap::Alloc ( size_t  n,
size_t  algn 
)
inlinenoexcept

アライメントを指定してメモリブロックを確保します。

引数
[in]nメモリブロックのサイズ
[in]algnアライメント
戻り値
確保されたメモリへのポインタ。失敗した場合はNULL

FrameHeap.h60 行目に定義があります。

§ Alloc() [3/3]

nn::nlib::heap::FrameHeap::Alloc ( size_t  n,
size_t  algn,
uint32_t  alloc_option 
)
noexcept

アライメントとアロケート時オプションを指定してメモリブロックを確保します。

引数
[in]nメモリブロックのサイズ
[in]algnアライメント
[in]alloc_optionアロケート時オプション(AllocOption型の値)
戻り値
確保されたメモリへのポインタ。失敗した場合はNULL

§ Init()

nn::nlib::heap::FrameHeap::Init ( void *  start,
size_t  size,
DestructorHandler  handler,
uint32_t  heap_option 
)
noexcept

フレームヒープを初期化します。

引数
[in]startヒープの開始位置へのポインタ
[in]sizeヒープのサイズ
[in]handlerデストラクタ実行時に呼び出される関数へのポインタ
[in]heap_option値は利用されません
戻り値
初期化に成功した場合は0, それ以外の場合は失敗。

§ ResizeTop()

nn::nlib::heap::FrameHeap::ResizeTop ( void *  p,
size_t  from_size,
size_t  to_size 
)
noexcept

最も最近に確保したメモリのサイズを変更します。

引数
[in]p最も最近に確保したメモリへのポインタ
[in]from_size元のサイズ
[in]to_size変更後のサイズ
戻り値
0ならば成功。それ以外の場合は失敗です。

§ RestoreState()

nn::nlib::heap::FrameHeap::RestoreState ( State  state)
inlinenoexcept

セーブしたヒープの状態に戻します。

引数
[in]state回復するヒープの状態

FrameHeap.h58 行目に定義があります。

§ SaveState()

nn::nlib::heap::FrameHeap::SaveState ( )
inlinenoexcept

現在のヒープの状態をセーブします。

戻り値
現在のヒープのメモリ確保状況

FrameHeap.h57 行目に定義があります。


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