[#BloombergLP-bslma-AutoDeallocator-2constructor-09] = xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bslma.adoc[bslma]::xref:BloombergLP/bslma/AutoDeallocator.adoc[AutoDeallocator]::AutoDeallocator :relfileprefix: ../../../ :mrdocs: Create an auto deallocator to manage a sequence of memory blocks. == Synopsis Declared in `<bslma_autodeallocator.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- template<class TYPE> AutoDeallocator( TYPE** origin, ALLOCATOR* allocator, int length = 0); ---- == Description Create an auto deallocator to manage a sequence of memory blocks at the specified `origin`, and that uses the specified `allocator` to deallocate the sequence of memory blocks managed by this range proctor (if not released ‐‐ see `release`) upon destruction. Optionally specify `length` to define its range, which by default is empty (i.e., `length = 0`). The sequence of memory blocks may extend in either direction from `origin`. A positive `length` represents the sequence of memory blocks starting at `origin` and extending "up" to `length` (_not_ including the memory block at the index position `origin + length`). A negative `length` represents the sequence of memory blocks starting at one position below `origin` and extending "down" to the absolute value of `length` (including the memory block at index position `origin + length`). If `length` is 0, then this range proctor manages no memory blocks. If `origin` is non‐zero, all memory blocks within the proctored range (if any) must be supplied by `allocator`. The behavior is undefined unless `allocator` is non‐zero, and, if `origin` is 0, `length` is also 0. Note that when `length` is non‐positive, the memory block at the origin is _not_ managed by this range proctor. For example, if `origin` is at the index position 2, a `length` of 2 signifies that the memory blocks at positions 2 and 3 are managed, whereas a `length` of ‐2 signifies that the memory blocks at positions 0 and 1 are managed: ` length = ‐2 length = 2 |<‐‐‐‐‐>| |<‐‐‐‐‐>| ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ | 0 | 1 | 2 | 3 | 4 | | 0 | 1 | 2 | 3 | 4 | `#=ˆ#=^===^#=ˆ#=' `#=ˆ#=^===^#=ˆ#=' ˆ‐‐‐‐‐‐‐‐‐‐‐‐ origin ˆ‐‐‐‐‐‐‐‐‐‐‐‐ origin ` == Parameters [cols="1,4"] |=== | Name| Description | *origin* | The address of the origin memory block pointer. | *allocator* | The allocator used to deallocate managed memory blocks. | *length* | The signed length of the managed memory block sequence. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#