This class implements a range proctor that, unless its release method has previously been invoked, automatically deallocates the contiguous sequence of managed memory blocks upon its own destruction by invoking the deallocate method of an allocator (or pool) of parameterized ALLOCATOR type supplied to it at construction. Each of the managed memory blocks must have been supplied by this allocator (or pool), which must remain valid throughout the lifetime of the range proctor. Note that when the length of this object is non‐zero, it must refer to a non‐null array of memory blocks.
Synopsis
Declared in <bslma_autodeallocator.h>
template<class ALLOCATOR>
class AutoDeallocator;
Member Functions
Name |
Description |
|
Create an auto deallocator to manage a sequence of memory blocks. |
|
Destroy this range proctor and deallocate the contiguous sequence of memory blocks it manages (if any) by invoking the |
Return the (signed) length of the sequence of memory blocks managed by this proctor. |
|
Increase by one the (signed) length of the sequence of memory blocks managed by this range proctor. The behavior is undefined unless the origin of the sequence of memory blocks managed by this proctor is non‐zero. The behavior is undefined unless the origin or this range proctor is non‐zero. Note that if the length of this proctor is currently negative, the number of managed memory blocks will decrease by one, whereas if the length is non‐negative, the number of managed memory blocks will increase by one. |
|
Decrease by one the (signed) length of the sequence of memory blocks managed by this range proctor. The behavior is undefined unless the origin of the sequence of memory blocks managed by this proctor is non‐zero. The behavior is undefined unless the origin or this range proctor is non‐zero. Note that if the length of this proctor is currently positive, the number of managed memory blocks will decrease by one, whereas if the length is non‐positive, the number of managed memory blocks will increase by one. |
|
Release from management the sequence of memory blocks currently managed by this range proctor by setting the length of the managed sequence to 0. All memory blocks currently under management will become unmanaged (i.e., when the proctor goes out of scope and it was not assigned another sequence of memory blocks to manage by invoking |
|
Set the specified |
|
Set the (signed) length of the sequence of memory blocks managed by this range proctor to the specified |
Created with MrDocs