11#ifndef INCGUARD_MGL_MEMORY_FIXED_SIZE_ALLOCATOR_H_1653211251
12#define INCGUARD_MGL_MEMORY_FIXED_SIZE_ALLOCATOR_H_1653211251
14#include <forward_list>
42 static_assert(
sizeof(Header) <= 16);
44 bool Initialize(
size_t blockSize,
size_t blockCount)
noexcept;
54 _altAllocator = altAllocator;
87 const std::lock_guard lock(_mutex);
102 void *
Allocate(
size_t size)
noexcept;
106 size_t _blockSize{0};
107 size_t _blockCount{0};
108 std::unique_ptr<std::byte[]> _pool{
nullptr};
110 std::unique_ptr<Block[]> _blockArray{
nullptr};
111 Block *_topBlock{
nullptr};
112 size_t _freeCount{0};
113 FixedSizeAllocator *_altAllocator{
nullptr};
固定サイズアロケータクラス
Definition mgl_memory_fixed_size_allocator.h:22
bool Initialize(size_t blockSize, size_t blockCount) noexcept
初期化
Definition mgl_memory_fixed_size_allocator.cc:25
void Deallocate(void *buffer) noexcept
デアロケート
Definition mgl_memory_fixed_size_allocator.cc:113
constexpr size_t GetCapacity() const noexcept
確保可能な最大数を取得
Definition mgl_memory_fixed_size_allocator.h:74
void * Allocate(size_t size) noexcept
アロケート
Definition mgl_memory_fixed_size_allocator.cc:73
size_t GetFreeCount() noexcept
利用可能なブロック数を取得
Definition mgl_memory_fixed_size_allocator.h:85
size_t GetUsedCount() noexcept
利用中のブロック数を取得
Definition mgl_memory_fixed_size_allocator.h:97
constexpr void SetAltAllocator(FixedSizeAllocator *altAllocator) noexcept
代替アロケータを設定
Definition mgl_memory_fixed_size_allocator.h:52
constexpr size_t GetBlockSize() const noexcept
ブロックサイズを取得
Definition mgl_memory_fixed_size_allocator.h:63
メモリブロック情報
Definition mgl_memory_fixed_size_allocator.h:26
Block * next
次のメモリブロック
Definition mgl_memory_fixed_size_allocator.h:28
uintptr_t address
メモリブロックのアドレス
Definition mgl_memory_fixed_size_allocator.h:27