36#include "core_api.hpp"
42 StackAllocator() =
default;
43 StackAllocator(
const StackAllocator&) =
delete;
44 StackAllocator& operator=(
const StackAllocator&) =
delete;
48 void initialize(size_t size);
50 void* allocate(std::size_t size, std::size_t alignment =
alignof(std::max_align_t)) {
51 std::size_t space =
static_cast<
char*>(_end) -
static_cast<
char*>(_current);
52 void* alignedPtr = _current;
54 if (std::align(alignment, size, alignedPtr, space)) {
55 _current =
static_cast<
char*>(alignedPtr) + size;
62 void deallocate(
void* ptr) {
63 assert(ptr < _current);
67 [[nodiscard]]
inline size_t get_size()
const {
68 return reinterpret_cast<uintptr_t>(_end) -
reinterpret_cast<uintptr_t>(_start);
72 void* _start{
nullptr};
74 void* _current{
nullptr};
Definition stack_allocator.hpp:40