[#BloombergLP-ball-CountingAllocator] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/ball.adoc[ball]::CountingAllocator :relfileprefix: ../../ :mrdocs: This class maintains a count of the total number of allocated bytes. == Synopsis Declared in `<ball_countingallocator.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class CountingAllocator : public xref:BloombergLP/bslma/Allocator.adoc[bslma::Allocator] ---- == Description The running byte count is initialized to 0 upon construction, is increased by the `allocate` method, and may be reset to 0 by the `resetNumBytesTotal` method. The `deallocate` method appropriately decrement the byte count. The precise definition of byte count is described in the "Byte Count" section of the component‐level documentation. == 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/ball/CountingAllocator/2constructor.adoc[`CountingAllocator`] [.small]#[constructor]# | Create a counting allocator having an initial byte count of 0. | xref:BloombergLP/ball/CountingAllocator/2destructor.adoc[`~CountingAllocator`] [.small]#[destructor]# [.small]#[virtual]# | Destroy this counting allocator. | xref:BloombergLP/bslma/Allocator/operator_assign.adoc[`operator=`] | | xref:BloombergLP/ball/CountingAllocator/allocate-0f.adoc[`allocate`] | Allocate a maximally aligned block of the specified `size`. | xref:BloombergLP/ball/CountingAllocator/deallocate-02.adoc[`deallocate`] | Return the memory 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`] | | xref:BloombergLP/ball/CountingAllocator/numBytesTotal.adoc[`numBytesTotal`] | Return the byte count maintained by this counting allocator. | xref:BloombergLP/ball/CountingAllocator/resetNumBytesTotal.adoc[`resetNumBytesTotal`] | Reset the byte count maintained by this counting allocator to 0. |=== == 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`. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#