bit::memory
Classes
BlockAllocator

This concept defines the required interface and semantics expected of a block allocator. More...

Classes

class  bit::memory::aligned_block_allocator< DefaultBlockSize, BlockAlign, GrowthMultiplier >
 An allocator that allocates over-aligned memory. More...
 
class  bit::memory::block_allocator_reference
 A type erased view of allocators that satisfy the BlockAllocator concept. More...
 
class  bit::memory::malloc_block_allocator< DefaultBlockSize, GrowthMultiplier >
 A block allocator that wraps around raw calls to std::malloc and std::free. More...
 
class  bit::memory::new_block_allocator< DefaultBlockSize, GrowthMultiplier >
 A block allocator that wraps around calls to new and delete. More...
 
class  bit::memory::null_block_allocator
 A block allocator that only distributes null blocks. More...
 
class  bit::memory::policy_block_allocator< BlockAllocator, MemoryTagger, MemoryTracker, BasicLockable >
 This block allocator uses policies to modify the behaviour of the underlying type. More...
 
class  bit::memory::stack_block_allocator< BlockSize, Blocks, Align >
 An allocator with automatic storage reclamation. More...
 
class  bit::memory::static_block_allocator< BlockSize, Blocks, Align, Tag >
 This is a block allocator that distributes blocks of memory stored statically. More...
 
class  bit::memory::thread_local_block_allocator< BlockSize, Blocks, Align, Tag >
 This is a block allocator that distributes blocks of static memory that is local to the specific thread. More...
 
class  bit::memory::virtual_block_allocator< Pages, GrowthMultiplier >
 This block allocator is used for creating virtual memory blocks. More...
 

Detailed Description

This concept defines the required interface and semantics expected of a block allocator.

The bit::memory BlockAllocator concept is used to distribute memory blocks to allocators that can use them.

BlockAllocators are also used as upstream resources for StreamingAllocators.

The size of a memory_block returned by a BlockAllocator is fixed at construction time, and is not permitted to vary.

For type A to be BlockAllocator, it must satisfy the following:

Provided

the following expressions must be well-formed with the expected side-effects:

memory_block b = a.allocate_block()

Allocates a memory_block of implementation-specific size


a.deallocate_block( b );

Deallocates the specified block


std::size_t s = a.next_block_size()

s contains the size of the next block to be allocated