7 #include <boost/memory/memory_block.hpp> 12 namespace boost {
namespace memory {
22 template <
typename free_list_type>
23 class free_list_helper final
29 using iterator_category = std::forward_iterator_tag;
30 using value_type = memory_block;
31 using difference_type = std::size_t;
32 using pointer = memory_block*;
33 using reference = memory_block&;
35 iterator(
typename free_list_type::node* current);
37 bool operator==(
const iterator& other);
38 bool operator!=(
const iterator& other);
39 iterator& operator++();
40 iterator operator++(
int step)
const;
41 value_type operator*()
const;
44 typename free_list_type::node* current_;
47 static constexpr
auto node_size =
sizeof(
typename free_list_type::node);
49 free_list_helper(free_list_type& instance);
51 auto& get_allocator() noexcept;
56 free_list_type& instance_;
80 std::
size_t batch_size,
113 friend free_list_helper<this_free_list_type>;
121 allocator allocator_;
122 node* head_ {
nullptr};
124 std::size_t allocations_count_ {0ul};
129 #include "free_list.ipp"
Provides mechanism for reusing deallocated memory blocks.
Represents an allocated memory block.