[#BloombergLP-bdlma-ManagedAllocator] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bdlma.adoc[bdlma]::ManagedAllocator :relfileprefix: ../../ :mrdocs: Protocol for allocators that support releasing all allocated memory. == Synopsis Declared in `<bdlma_managedallocator.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class ManagedAllocator : public xref:BloombergLP/bslma/Allocator.adoc[bslma::Allocator] ---- == Description This protocol class extends `bslma::Allocator` for allocators with the ability to `release` all memory currently allocated through the protocol back to the memory supplier of the derived concrete allocator object. == Base Classes [cols="1,4"] |=== | Name| Description | `xref:BloombergLP/bslma/Allocator.adoc[bslma::Allocator]` | Pure abstract protocol for clients and suppliers of raw memory. |=== == Type Aliases [cols="1,4"] |=== | Name| Description | 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. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslma/Allocator/operator_assign.adoc[`operator=`] | | xref:BloombergLP/bslma/Allocator/allocate-03b.adoc[`allocate`] | Return a newly allocated block of memory of at least `size` bytes. | xref:BloombergLP/bslma/Allocator/deallocate-04.adoc[`deallocate`] | Return the memory block at `address` to this 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/bdlma/ManagedAllocator/release.adoc[`release`] [.small]#[virtual]# | Release all memory currently allocated through this allocator. |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | 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`. |=== == Derived Classes [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bdlma/BufferedSequentialAllocator.adoc[`BufferedSequentialAllocator`] | Fast allocator that dispenses heterogeneous blocks from an external buffer. | xref:BloombergLP/bdlma/ConcurrentMultipoolAllocator.adoc[`ConcurrentMultipoolAllocator`] | Thread‐safe allocator managing pools of varying block sizes. | xref:BloombergLP/bdlma/MultipoolAllocator.adoc[`MultipoolAllocator`] | Allocator that manages pools of memory blocks of varying sizes. | xref:BloombergLP/bdlma/SequentialAllocator.adoc[`SequentialAllocator`] | Fast allocator that dispenses heterogeneous blocks from dynamically allocated buffers. | xref:BloombergLP/balst/StackTraceTestAllocator.adoc[`StackTraceTestAllocator`] | This class defines a concrete "test" allocator mechanism that implements the `bdlma::ManagedAllocator` protocol. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#