diff options
Diffstat (limited to 'libk/memory.h')
-rw-r--r-- | libk/memory.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/libk/memory.h b/libk/memory.h new file mode 100644 index 0000000..a01252c --- /dev/null +++ b/libk/memory.h @@ -0,0 +1,39 @@ +#pragma once + +#include <types.h> + +class MemoryAllocator { +public: + MemoryAllocator(uint32_t start, size_t size); + + void* allocate(size_t size); + void deallocate(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*); |