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

スタックに積み上げるようにメモリを確保していくアロケータです。 [詳解]

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

公開メンバ関数

errno_t Init (void *start, size_t size, uint32_t heap_option) noexcept
 スタックヒープを初期化します。 [詳解]
 
void FreeAll () noexcept
 メモリを全て解放し、ヒープを初期化直後の状態に戻します。
 
errno_t ResizeTop (void *p, size_t from_size, size_t to_size) noexcept
 最も最近に確保したメモリのサイズを変更します。 [詳解]
 
errno_t Adjust (void **start, size_t *size) noexcept
 ヒープのサイズを現在までに確保した領域まで切り詰めます。 [詳解]
 
void * Alloc (size_t n, size_t algn) noexcept
 アライメントを指定してメモリブロックを確保します。 [詳解]
 
void * Alloc (size_t n) noexcept
 メモリブロックを確保します。 [詳解]
 
errno_t Free (void *p) noexcept
 次のメモリ確保位置をp の位置まで戻します。 [詳解]
 
void Dump () noexcept
 ヒープの状態をダンプします。
 

詳解

スタックに積み上げるようにメモリを確保していくアロケータです。

説明
このアロケータを使う場合、確保・解放の順番がLIFOの順番になっている必要があります。

StackHeap.h29 行目に定義があります。

関数詳解

◆ Adjust()

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

ヒープのサイズを現在までに確保した領域まで切り詰めます。

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

◆ Alloc() [1/2]

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

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

引数
[in]nメモリブロックのサイズ
[in]algnアライメント
戻り値
確保されたメモリへのポインタ。失敗した場合はNULL
説明
アライメントは2のべき乗を指定する必要があります。

StackHeap.h37 行目に定義があります。

◆ Alloc() [2/2]

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

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

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

StackHeap.h46 行目に定義があります。

◆ Free()

nn::nlib::heap::StackHeap::Free ( void *  p)
inlinenoexcept

次のメモリ確保位置をp の位置まで戻します。

引数
[in]p解放するメモリブロックのポインタ
戻り値
0ならば成功。0以外の場合はポインタが不正です。

StackHeap.h47 行目に定義があります。

◆ Init()

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

スタックヒープを初期化します。

引数
[in]startヒープの開始位置へのポインタ
[in]sizeヒープのサイズ
[in]heap_option値は利用されません
戻り値
成功ならば0

◆ ResizeTop()

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

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

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

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