[#BloombergLP-bslma-BufferAllocator]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslma.adoc[bslma]::BufferAllocator
:relfileprefix: ../../
:mrdocs:

Concrete buffer allocator that allocates from a user&hyphen;supplied fixed&hyphen;size buffer&period;

== Synopsis

Declared in `&lt;bslma&lowbar;bufferallocator&period;h&gt;`

[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&hyphen;size buffer that is supplied by the user at construction&period; The allocator can supply memory that can be maximally (default) or naturally aligned&period;

== Base Classes

[cols="1,4"]
|===
| Name| Description
| `xref:BloombergLP/bslma/Allocator.adoc[Allocator]`
| Pure abstract protocol for clients and suppliers of raw memory&period;
|===

== 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 &ast;`&period;
| xref:BloombergLP/bslma/Allocator/size_type.adoc[`size&lowbar;type`] 
| Alias for an unsigned integral type capable of representing the number of bytes in this platform&apos;s virtual address space&period;
|===


== Enums

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslma/BufferAllocator/AlignmentStrategy.adoc[`AlignmentStrategy`] 
| Types of alignment strategy to allocate memory&period;
|===


== Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslma/BufferAllocator/2constructor-0fb.adoc[`BufferAllocator`]         [.small]#[constructor]#
| Constructors
| xref:BloombergLP/bslma/BufferAllocator/2destructor.adoc[`&#126;BufferAllocator`] [.small]#[destructor]# [.small]#[virtual]#
| Destroy this buffer allocator&period;
| xref:BloombergLP/bslma/Allocator/operator_assign.adoc[`operator&equals;`] 
| 
| xref:BloombergLP/bslma/BufferAllocator/allocate-05.adoc[`allocate`] 
| Return a newly allocated block of memory of the specified `size`&period;
| xref:BloombergLP/bslma/BufferAllocator/deallocate-06.adoc[`deallocate`] 
| This function has no effect for this buffer allocator&period;
| 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&lowbar;equal`] 
| 
| xref:BloombergLP/bslma/BufferAllocator/print.adoc[`print`] 
| Write formatted debugging information to `stdout` describing the internal state of this buffer allocator&period;
|===


== 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&colon;&colon;bad&lowbar;alloc` or abort the program&period;
|===


== Protected Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bslma/Allocator/do_allocate.adoc[`do&lowbar;allocate`]  [.small]#[virtual]#
| Return a newly allocated block of at least `bytes` with `alignment`&period;
| xref:BloombergLP/bslma/Allocator/do_deallocate.adoc[`do&lowbar;deallocate`]  [.small]#[virtual]#
| Return the memory block at `p` having `bytes` and `alignment`&period;
| xref:BloombergLP/bslma/Allocator/do_is_equal.adoc[`do&lowbar;is&lowbar;equal`]  [.small]#[virtual]#
| Return whether this allocator can exchange memory with `other`&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
