7 #include "memory_block.hpp" 10 namespace boost {
namespace memory {
12 template <
typename primary_allocator,
typename secondary_allocator>
15 auto block = primary_.allocate(size);
16 if (block.address !=
nullptr)
19 return secondary_.allocate(size);
22 template <
typename primary_allocator,
typename secondary_allocator>
25 if (primary_.owns(block))
26 primary_.deallocate(block);
27 else if (secondary_.owns(block))
28 secondary_.deallocate(block);
31 template <
typename primary_allocator,
typename secondary_allocator>
34 return primary_.owns(block) || secondary_.owns(block);
37 template <
typename primary_allocator,
typename secondary_allocator>
43 template <
typename primary_allocator,
typename secondary_allocator>
Allocates with secondary allocator, if allocation with primary allocator fails.
bool owns(memory_block &block)
Examines if the given block is owned by this allocator.
void deallocate(memory_block &block)
Deallocates the given memory_block.
Represents an allocated memory block.
memory_block allocate(std::size_t size)
Allocates a memory_block with either primary_allocator or secondary_allocator.