[#BloombergLP-bslma-BufferAllocator] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslma.adoc[bslma]::BufferAllocator :relfileprefix: ../../ :mrdocs: Concrete buffer allocator that allocates from a user‐supplied fixed‐size buffer. == Synopsis Declared in `<bslma_bufferallocator.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class BufferAllocator : public xref:BloombergLP/bslma/Allocator.adoc[Allocator] ---- == Description This `class` provides a concrete buffer allocator that implements the `Allocator` interface, and allocates memory blocks from a fixed‐size buffer that is supplied by the user at construction. The allocator can supply memory that can be maximally (default) or naturally aligned. == Base Classes [cols="1,4"] |=== | Name| Description | `xref:BloombergLP/bslma/Allocator.adoc[Allocator]` | Pure abstract protocol for clients and suppliers of raw memory. |=== == Type Aliases [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslma/BufferAllocator/AllocCallback.adoc[`AllocCallback`] | `AllocCallback` is an alias for (the address of) a function that takes an integer argument and returns `void *`. | xref:BloombergLP/bslma/Allocator/size_type.adoc[`size_type`] | Alias for an unsigned integral type capable of representing the number of bytes in this platform's virtual address space. |=== == Enums [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslma/BufferAllocator/AlignmentStrategy.adoc[`AlignmentStrategy`] | Types of alignment strategy to allocate memory. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslma/BufferAllocator/2constructor-0fb.adoc[`BufferAllocator`] [.small]#[constructor]# | Constructors | xref:BloombergLP/bslma/BufferAllocator/2destructor.adoc[`~BufferAllocator`] [.small]#[destructor]# [.small]#[virtual]# | Destroy this buffer allocator. | xref:BloombergLP/bslma/Allocator/operator_assign.adoc[`operator=`] | | xref:BloombergLP/bslma/BufferAllocator/allocate-05.adoc[`allocate`] | Return a newly allocated block of memory of the specified `size`. | xref:BloombergLP/bslma/BufferAllocator/deallocate-06.adoc[`deallocate`] | This function has no effect for this buffer allocator. | xref:BloombergLP/bslma/Allocator/deleteObject-09.adoc[`deleteObject`] | `deleteObject` overloads | xref:BloombergLP/bslma/Allocator/deleteObjectRaw-06f.adoc[`deleteObjectRaw`] | `deleteObjectRaw` overloads | xref:BloombergLP/bslma/Allocator/is_equal.adoc[`is_equal`] | | xref:BloombergLP/bslma/BufferAllocator/print.adoc[`print`] | Write formatted debugging information to `stdout` describing the internal state of this buffer allocator. |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslma/BufferAllocator/allocateFromBuffer-0a.adoc[`allocateFromBuffer`] | `allocateFromBuffer` overloads | xref:BloombergLP/bslma/Allocator/throwBadAlloc.adoc[`throwBadAlloc`] | Throw `std::bad_alloc` or abort the program. |=== == Protected Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslma/Allocator/do_allocate.adoc[`do_allocate`] [.small]#[virtual]# | Return a newly allocated block of at least `bytes` with `alignment`. | xref:BloombergLP/bslma/Allocator/do_deallocate.adoc[`do_deallocate`] [.small]#[virtual]# | Return the memory block at `p` having `bytes` and `alignment`. | xref:BloombergLP/bslma/Allocator/do_is_equal.adoc[`do_is_equal`] [.small]#[virtual]# | Return whether this allocator can exchange memory with `other`. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#