32 void*
allocate(std::size_t bytes, std::size_t alignment);
35 void deallocate(
void* ptr, std::size_t bytes, std::size_t alignment);
39 std::reference_wrapper<memory_resource> m_upstream;
44 struct chunk_descriptor {
46 std::size_t size = 0u;
48 void* pointer =
nullptr;
52 struct oversized_block_descriptor {
54 std::size_t size = 0u;
56 std::size_t alignment = 0u;
58 void* pointer =
nullptr;
61 bool operator<(
const oversized_block_descriptor& other)
const;
67 std::vector<void*> free_blocks;
68 std::size_t previous_allocated_count = 0u;
72 const std::size_t m_smallest_block_log2;
75 std::vector<pool> m_pools;
77 std::vector<chunk_descriptor> m_allocated;
80 std::vector<oversized_block_descriptor> m_cached_oversized;
83 std::vector<oversized_block_descriptor> m_oversized;
pool_memory_resource_impl(memory_resource &upstream, const pool_memory_resource::options &opts)
Constructor, on top of another memory resource.
Definition pool_memory_resource_impl.cpp:69