11#ifndef INCGUARD_MGL_MEMORY_FIXED_SIZE_ALLOCATOR_H_1653211251
12#define INCGUARD_MGL_MEMORY_FIXED_SIZE_ALLOCATOR_H_1653211251
32 enum class Tag : int8_t
56 static_assert(
sizeof(Header) <= 16);
58 bool Initialize(
Tag tag,
size_t blockSize,
size_t blockCount)
noexcept;
68 _altAllocator = altAllocator;
101 const std::lock_guard lock(_mutex);
116 void *
Allocate(
size_t size)
noexcept;
121 size_t _blockSize{0};
122 size_t _blockCount{0};
123 std::unique_ptr<std::byte[]> _pool{
nullptr};
125 std::unique_ptr<Block[]> _blockArray{
nullptr};
126 Block *_topBlock{
nullptr};
127 size_t _freeCount{0};
128 FixedSizeAllocator *_altAllocator{
nullptr};
固定サイズアロケータクラス
Definition mgl_memory_fixed_size_allocator.h:21
void Deallocate(void *buffer) noexcept
デアロケート
Definition mgl_memory_fixed_size_allocator.cc:117
constexpr size_t GetCapacity() const noexcept
確保可能な最大数を取得
Definition mgl_memory_fixed_size_allocator.h:88
void * Allocate(size_t size) noexcept
アロケート
Definition mgl_memory_fixed_size_allocator.cc:76
Tag
アロケータの種類を判別するためのタグ
Definition mgl_memory_fixed_size_allocator.h:33
@ Fixed3
インデックス3の固定サイズアロケータ
@ Fixed1
インデックス1の固定サイズアロケータ
@ Fixed0
インデックス0の固定サイズアロケータ
@ Fixed2
インデックス2の固定サイズアロケータ
size_t GetFreeCount() noexcept
利用可能なブロック数を取得
Definition mgl_memory_fixed_size_allocator.h:99
bool Initialize(Tag tag, size_t blockSize, size_t blockCount) noexcept
初期化
Definition mgl_memory_fixed_size_allocator.cc:26
size_t GetUsedCount() noexcept
利用中のブロック数を取得
Definition mgl_memory_fixed_size_allocator.h:111
constexpr void SetAltAllocator(FixedSizeAllocator *altAllocator) noexcept
代替アロケータを設定
Definition mgl_memory_fixed_size_allocator.h:66
constexpr size_t GetBlockSize() const noexcept
ブロックサイズを取得
Definition mgl_memory_fixed_size_allocator.h:77
メモリブロック情報
Definition mgl_memory_fixed_size_allocator.h:25
void * address
メモリブロックのアドレス
Definition mgl_memory_fixed_size_allocator.h:26
Block * next
次のメモリブロック
Definition mgl_memory_fixed_size_allocator.h:27