XMLパーサーが内部で利用するアロケータです。ユーザーが利用することもできます。
[詳解]
#include "nn/nlib/exi/ExiAllocator.h"
|
static bool | Test (size_t nbytes) noexcept |
| nBytes のメモリがアロケート可能かどうかをテストします。 [詳解]
|
|
static size_t | GetPos () noexcept |
| 割り当て済みメモリのサイズを返します。 [詳解]
|
|
static bool | IsOutOfMemory () noexcept |
| 以前のメモリアロケートが失敗したかどうかを調べます。 [詳解]
|
|
static ExiAllocatorEx | GetAllocator () noexcept |
| スレッド毎のExiAllocatorEx オブジェクトを返します。
|
|
|
static errno_t | Init (void *p, size_t size) noexcept |
| アロケータを初期化します。 [詳解]
|
|
static void * | Finalize () noexcept |
| アロケータの利用を終了します。 [詳解]
|
|
static void | Reset () noexcept |
| アロケータをリセットします。アロケータは初期化直後の状態になります。
|
|
|
static void * | Alloc (size_t nbytes) noexcept |
| アロケータからnBytes のメモリを割り当てます。 [詳解]
|
|
static void * | Realloc (void *ptr, size_t from_nbytes, size_t nbytes) noexcept |
| アロケートされたメモリを拡張する場合に呼び出されることがあります。 [詳解]
|
|
static void | Dealloc (void *p) noexcept |
| メモリをデアロケートしたときに呼び出されます。 [詳解]
|
|
XMLパーサーが内部で利用するアロケータです。ユーザーが利用することもできます。
- 説明
- XMLパーサーはユーザーが最初に与えたメモリの範囲内で動作します。 これは、不正なデータ(長すぎる要素名など)が与えられた場合等にシステム全体を不安定にしてしまうようなことにならないようにするためです。 また、スレッド毎に別のメモリでアロケータを初期化する必要があります。 同じスレッドであれば、どのXMLリーダーやXMLライターからも同一のメモリ空間からメモリを取得しているので、
ExiAllocator::Reset()
等を利用する際には注意が必要です。
- 以下は初期化と終了処理のコード例です。
ExiAllocator.h の 56 行目に定義があります。
§ Alloc()
nn::nlib::exi::ExiAllocator::Alloc |
( |
size_t |
nbytes | ) |
|
|
staticnoexcept |
アロケータからnBytes
のメモリを割り当てます。
- 引数
-
- 戻り値
- 割り当てられたメモリのアドレス。失敗した場合は
NULL
§ Dealloc()
nn::nlib::exi::ExiAllocator::Dealloc |
( |
void * |
p | ) |
|
|
staticnoexcept |
メモリをデアロケートしたときに呼び出されます。
- 引数
-
§ Finalize()
nn::nlib::exi::ExiAllocator::Finalize |
( |
| ) |
|
|
staticnoexcept |
アロケータの利用を終了します。
- 戻り値
- 初期化時に与えたメモリブロックのポインタ
- 説明
- アロケータの利用を終了し、初期化以前の状態に戻します。
exi
ライブラリを利用したスレッド毎に呼び出す必要があります。
§ GetPos()
nn::nlib::exi::ExiAllocator::GetPos |
( |
| ) |
|
|
staticnoexcept |
割り当て済みメモリのサイズを返します。
- 戻り値
- 割り当て済みメモリのサイズ
§ Init()
nn::nlib::exi::ExiAllocator::Init |
( |
void * |
p, |
|
|
size_t |
size |
|
) |
| |
|
staticnoexcept |
アロケータを初期化します。
- 引数
-
[in] | p | メモリブロックの先頭へのポインタ |
[in] | size | メモリブロックのサイズ |
- 戻り値
- 成功ならば0
- 説明
- アロケータにメモリを割り当て初期化します。 スレッド毎に別々のメモリを割り当てて初期化する必要があります。
exi
ライブラリはそれぞれのスレッドに割り当てられたメモリを利用して動作することになります。 従って、XMLパーサーの同一インスタンスを複数のスレッドで利用することはできません。
§ IsOutOfMemory()
nn::nlib::exi::ExiAllocator::IsOutOfMemory |
( |
| ) |
|
|
staticnoexcept |
以前のメモリアロケートが失敗したかどうかを調べます。
- 戻り値
- メモリのアロケートに失敗していれば
true
§ Realloc()
nn::nlib::exi::ExiAllocator::Realloc |
( |
void * |
ptr, |
|
|
size_t |
from_nbytes, |
|
|
size_t |
nbytes |
|
) |
| |
|
staticnoexcept |
アロケートされたメモリを拡張する場合に呼び出されることがあります。
- 引数
-
[in] | ptr | 拡張されるメモリの先頭アドレス |
[in] | from_nbytes | 拡張前のアロケートされたメモリサイズ |
[in] | nbytes | 拡張後のメモリサイズ |
- 戻り値
- 割り当てられたメモリのアドレス。失敗した場合は
NULL
- 説明
- C標準関数のreallocと違い、現在アロケートされているメモリのサイズを渡す必要があります。
§ Test()
nn::nlib::exi::ExiAllocator::Test |
( |
size_t |
nbytes | ) |
|
|
staticnoexcept |
nBytes
のメモリがアロケート可能かどうかをテストします。
- 引数
-
[in] | nbytes | アロケートしようとするメモリのサイズ |
- 戻り値
false
ならばアロケート不可能
- 説明
false
を返した場合は以後のIsOutOfMemory()
の呼び出しがtrue
を返します。 Alloc()
が失敗するかどうかを事前に知りたい場合に利用します。
このクラス詳解は次のファイルから抽出されました: