CachedHeap
と対になって利用される中央ヒープクラスです。nmalloc()
の実装に利用されています。
[詳解]
#include "nn/nlib/heap/CentralHeap.h"
|
static const size_t | kPageSize |
| ヒープのページサイズです(OSのページサイズとの関連性はありません)。
|
|
CachedHeap
と対になって利用される中央ヒープクラスです。nmalloc()
の実装に利用されています。
- 説明
- 各スレッド専用のヒープである
CachedHeap
を作成することができます。 CachedHeap
が中央ヒープからメモリを取得したり返却したりします。 ユーザーのメモリ確保と解放は 基本的にCachedHeap
を通じて行います。 CentralHeap
から直接メモリを確保することもできますが、効率は落ちます。
CentralHeap.h の 18 行目に定義があります。
nn::nlib::heap::CentralHeap::Alloc |
( |
size_t |
n | ) |
|
|
inlinenoexcept |
メモリブロックを確保します。
- 引数
-
- 戻り値
- 確保されたメモリへのポインタ。失敗した場合は
NULL
CentralHeap.h の 30 行目に定義があります。
nn::nlib::heap::CentralHeap::Alloc |
( |
size_t |
n, |
|
|
size_t |
algn |
|
) |
| |
|
noexcept |
アライメントを指定してメモリブロックを確保します。
- 引数
-
[in] | n | メモリブロックのサイズ |
[in] | algn | アライメント |
- 戻り値
- 確保されたメモリへのポインタ。失敗した場合は
NULL
- 指定できるアライメントは2のべき乗である必要があります。
nn::nlib::heap::CentralHeap::CalcHeapHash |
( |
HeapHash * |
hash | ) |
|
|
noexcept |
詳しくは、 nmalloc_dumpex2() をご覧下さい。
- 引数
-
[in] | mode | 表示オプションです。 |
[in] | fd | 表示を行うファイルディスクリプタです。1を指定した場合、標準出力になります。 |
nn::nlib::heap::CentralHeap::Free |
( |
void * |
p | ) |
|
|
noexcept |
メモリを解放します。
- 引数
-
- 戻り値
- 0ならば成功。0以外の場合はポインタがヒープに存在しない等のエラーが発生しています。
nn::nlib::heap::CentralHeap::Initialize |
( |
void * |
start, |
|
|
size_t |
size, |
|
|
uint32_t |
heap_option |
|
) |
| |
|
noexcept |
ヒープを初期化します。
- 引数
-
- 戻り値
- 0ならば初期化が成功しています。それ以外ならば失敗しています。
- 説明
start
が kPageSize
でアライメントされていない場合は、領域が切り詰められて利用されます。
nn::nlib::heap::CentralHeap::IsClean |
( |
| ) |
|
|
noexcept |
ヒープの状態がメタデータも含めて初期化直後の状態と同じかチェックします。
- 戻り値
- ヒープの状態が初期化直後と同じならば
true
- 説明
- 詳しくは
nmalloc_isclean()
を参照してください。
nn::nlib::heap::CentralHeap::MakeCache |
( |
CachedHeap * |
ptr | ) |
|
|
noexcept |
このクラス詳解は次のファイルから抽出されました: