picox
0.1
|
Fixed memory allocator. [詳解]
#include <picox/core/xcore.h>
データ構造 | |
struct | XFixedAllocator |
マクロ定義 | |
#define | XFALLOC_MIN_ALIGNMENT (X_ALIGN_OF(size_t)) |
関数 | |
void * | xfalloc_allocate (XFixedAllocator *self) |
static size_t | xfalloc_block_size (const XFixedAllocator *self) |
void | xfalloc_clear (XFixedAllocator *self) |
void | xfalloc_deallocate (XFixedAllocator *self, void *ptr) |
static void * | xfalloc_heap (const XFixedAllocator *self) |
void | xfalloc_init (XFixedAllocator *self, void *heap, size_t heap_size, size_t block_size) |
static size_t | xfalloc_num_blocks (const XFixedAllocator *self) |
static size_t | xfalloc_remain_blocks (const XFixedAllocator *self) |
Fixed memory allocator.
メモリを固定サイズのブロックに分割してメモリアロケーションを行います。 通常のmallocを使用した場合との主な違いは以下の通りです。
[利点]
一般的に可変長メモリアロケータのメモリ確保と解放にかかる時間は不定です。固 定メモリブロックでは一定かつ、ほぼ1オペレーションで処理が完了します。
一般的な可変長メモリ確保では、例えば指定サイズのメモリにヘッダ情報の格納用 に4~16バイト程度追加で確保されます。このアロケータではヘッダ領域を一切使用 しません。
固定サイズのブロックなので当然ですが、何度メモリ確保と解放を繰り返しても断 片化しません。
[欠点]
[利用例]
@author MaskedW
void* xfalloc_allocate | ( | XFixedAllocator * | self | ) |
ヒープから1ブロックを取り出して返します
|
inlinestatic |
1ブロックのサイズを返します
void xfalloc_clear | ( | XFixedAllocator * | self | ) |
ヒープを初期状態に戻します
void xfalloc_deallocate | ( | XFixedAllocator * | self, |
void * | ptr | ||
) |
ヒープにブロックを返却します
ptrがNULLの時は何もしません。
|
inlinestatic |
ヒープメモリを返します
void xfalloc_init | ( | XFixedAllocator * | self, |
void * | heap, | ||
size_t | heap_size, | ||
size_t | block_size | ||
) |
メモリブロックを初期化します
heap | ブロック化するメモリ領域 |
heap_size | heap領域のバイト数 |
block_size | 1ブロックのサイズ |
alignment | ブロックのアラインメント |
|
inlinestatic |
heapの総ブロック数を返します
|
inlinestatic |
heapの残りブロック数を返します