[#BloombergLP-bslma-NewDeleteAllocator] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslma.adoc[bslma]::NewDeleteAllocator :relfileprefix: ../../ :mrdocs: Concrete allocator adapting global `operator new` and `operator delete`. == Synopsis Declared in `<bslma_newdeleteallocator.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class NewDeleteAllocator : public xref:BloombergLP/bslma/Allocator.adoc[Allocator] ---- == Description This class defines a concrete mechanism that adapts the system‐supplied (native) global `operator new` and `operator delete` to the `Allocator` protocol. The class method `singleton` returns a process‐wide unique object of this class whose lifetime is guaranteed to extend from the first call to `singleton` until the program terminates. A second class method, `allocator`, allows for conveniently replacing a "null" allocator with this singleton object. Note that this entire class should generally not be used directly by typical clients (see `bslma_default` for more information). == 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/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/NewDeleteAllocator/2constructor.adoc[`NewDeleteAllocator`] [.small]#[constructor]# | Create a new‐delete allocator that wraps global `new` and `delete`. | xref:BloombergLP/bslma/NewDeleteAllocator/2destructor.adoc[`~NewDeleteAllocator`] [.small]#[destructor]# [.small]#[virtual]# | Destroy this allocator object. Note that destroying this allocator has no effect on any outstanding allocated memory. | xref:BloombergLP/bslma/Allocator/operator_assign.adoc[`operator=`] | | xref:BloombergLP/bslma/NewDeleteAllocator/allocate-02.adoc[`allocate`] | Allocate a block of memory of at least the specified `size` bytes. | xref:BloombergLP/bslma/NewDeleteAllocator/deallocate-0f.adoc[`deallocate`] | Return the memory block at the specified `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`] | |=== == Static Member Functions [cols="1,4"] |=== | Name| Description | xref:BloombergLP/bslma/NewDeleteAllocator/allocator.adoc[`allocator`] | Return `basicAllocator`, or this class's singleton if it is 0. | xref:BloombergLP/bslma/NewDeleteAllocator/singleton.adoc[`singleton`] | Return a reference to a process‐wide unique object of this class. | 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]#