From 12302df8b3f59de46f9f20ecae57ccf874d0c867 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Sat, 20 Mar 2021 16:24:14 +0200 Subject: Add allocator --- src/allocator.h | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/allocator.h (limited to 'src/allocator.h') diff --git a/src/allocator.h b/src/allocator.h new file mode 100644 index 0000000..8a12be8 --- /dev/null +++ b/src/allocator.h @@ -0,0 +1,39 @@ +#pragma once + +#include + +class MemoryAllocator { +public: + MemoryAllocator(uint32_t start, size_t size); + + void* malloc(size_t size); + void free(void* ptr); + + size_t free_space() const; + size_t used_space() const; + +private: + struct MemoryChunk { + MemoryChunk* prev = nullptr; + MemoryChunk* next = nullptr; + bool allocated = false; + size_t size = 0; + }; + MemoryChunk* begin; +}; + +namespace std { +struct nothrow_t { + explicit nothrow_t() = default; +}; +}; // namespace std + +void* operator new(unsigned, const std::nothrow_t&) noexcept; +void* operator new[](unsigned, const std::nothrow_t&) noexcept; + +void operator delete(void* ptr); +void operator delete[](void* ptr); + +// placement new +void* operator new(unsigned, void*); +void* operator new[](unsigned, void*); -- cgit v1.2.1