#pragma once #include "arena.hpp" #include class memory_pool{ std::array _pool; public: memory_pool() : _pool() { _pool.fill(arena()); for(auto& a : _pool) a = arena(4096); } memory_pool(memory_pool&) = delete; memory_pool(memory_pool&&) = delete; void* allocate(size_t sz) { for(auto& a : _pool) { void* ptr = a.allocate(sz); if(ptr!=nullptr) return ptr; } return nullptr; } void desallocate(void* ptr) { for(auto& a : _pool) { bool success = a.desallocate(ptr); if(success) return; } } };