SimpleAllocator
-
class SimpleAllocator
Bases:
LinkedListNode
An implementation of a very simple block allocator. This class can allocate ranges of nonnegative integers within a specified upper limit; it uses a simple first-fit algorithm to find the next available space.
Inheritance diagram
-
SimpleAllocatorBlock *alloc(std::size_t size, std::size_t alignment = 1)
Allocates a new block. Returns NULL if a block of the requested size cannot be allocated.
To free the allocated block, call block->free(), or simply delete the block pointer.
-
std::size_t get_contiguous(void) const
Returns an upper-bound estimate of the size of the largest contiguous block that may be allocated. It is guaranteed that an attempt to allocate a block larger than this will fail, though it is not guaranteed that an attempt to allocate a block this size or smaller will succeed.
-
SimpleAllocatorBlock *get_first_block(void) const
Returns a pointer to the first allocated block, or NULL if there are no allocated blocks.
-
std::size_t get_max_size(void) const
Returns the available space for allocated objects.
-
std::size_t get_total_size(void) const
Returns the total size of allocated objects.
-
bool is_empty(void) const
Returns true if there are no blocks allocated on this page, or false if there is at least one.
-
void output(std::ostream &out) const
-
void set_max_size(std::size_t max_size)
Changes the available space for allocated objects. This will not affect any already-allocated objects, but will have an effect on future calls to
alloc()
.
-
void write(std::ostream &out) const
-
SimpleAllocatorBlock *alloc(std::size_t size, std::size_t alignment = 1)