|
| SequentialAllocator (Allocator *basicAllocator=0) |
|
| SequentialAllocator (BufferAllocator::AlignmentStrategy strategy, Allocator *basicAllocator=0) |
|
| SequentialAllocator (int initialSize, Allocator *basicAllocator=0) |
|
| SequentialAllocator (int initialSize, BufferAllocator::AlignmentStrategy strategy, Allocator *basicAllocator=0) |
|
| SequentialAllocator (char *buffer, int bufferSize, Allocator *basicAllocator=0) |
|
| SequentialAllocator (char *buffer, int bufferSize, BufferAllocator::AlignmentStrategy strategy, Allocator *basicAllocator=0) |
|
| SequentialAllocator (int initialSize, int maxBufferSize, Allocator *basicAllocator=0) |
|
| SequentialAllocator (int initialSize, int maxBufferSize, BufferAllocator::AlignmentStrategy strategy, Allocator *basicAllocator=0) |
|
| SequentialAllocator (char *buffer, int bufferSize, int maxBufferSize, Allocator *basicAllocator=0) |
|
| SequentialAllocator (char *buffer, int bufferSize, int maxBufferSize, BufferAllocator::AlignmentStrategy strategy, Allocator *basicAllocator=0) |
|
| ~SequentialAllocator () BSLS_KEYWORD_OVERRIDE |
| Destroy this sequential allocator and release all associated memory.
|
|
void * | allocate (size_type numBytes) BSLS_KEYWORD_OVERRIDE |
|
void * | allocateAndExpand (int *size) |
|
void * | allocateAndExpand (int *size, int maxNumBytes) |
|
void | deallocate (void *address) BSLS_KEYWORD_OVERRIDE |
| This method has no effect for this allocator.
|
|
int | expand (void *address, int originalNumBytes) |
|
int | expand (void *address, int originalNumBytes, int maxNumBytes) |
|
void | release () BSLS_KEYWORD_OVERRIDE |
| Release all memory currently allocated through this allocator.
|
|
virtual void | reserveCapacity (int numBytes) |
|
int | truncate (void *address, int originalNumBytes, int newNumBytes) |
|
| ~Allocator () BSLS_KEYWORD_OVERRIDE |
|
template<class TYPE > |
void | deleteObject (const TYPE *object) |
|
template<class TYPE > |
void | deleteObjectRaw (const TYPE *object) |
|
void | deleteObject (bsl::nullptr_t) |
|
void | deleteObjectRaw (bsl::nullptr_t) |
|
| memory_resource () BSLS_KEYWORD_DEFAULT |
| Create this object. Has no effect other than to begin its lifetime.
|
|
| memory_resource (const memory_resource &) BSLS_KEYWORD_DEFAULT |
|
virtual | ~memory_resource () |
| Destroy this object. Has no effect other than to end its lifetime.
|
|
memory_resource & | operator= (const memory_resource &) BSLS_KEYWORD_DEFAULT |
| Return a modifiable reference to this object.
|
|
BSLS_ANNOTATION_NODISCARD void * | allocate (size_t bytes, size_t alignment=k_MAX_ALIGN) |
|
void | deallocate (void *p, size_t bytes, size_t alignment=k_MAX_ALIGN) |
|
bool | is_equal (const memory_resource &other) const BSLS_KEYWORD_NOEXCEPT |
|
This class implements the ManagedAllocator
protocol to provide a fast allocator of arbitrarily-sized blocks of memory. Both the release
method and the destructor atomically delete all memory managed by this allocator; the deallocate
method, however, has no effect for this class.
See bslma_sequentialallocator
Create a sequential allocator for allocating memory blocks from an internal buffer. Optionally specify an alignment strategy
used to align allocated memory blocks. If strategy
is not specified, Natural Alignment is used. Optionally specify an initialSize
the absolute value of which indicates the initial size (in bytes) for the internal buffer. If initialSize
is not specified, an implementation-defined value is used. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. If an allocate
or reserveCapacity
request cannot be satisfied from the current buffer, a new buffer is allocated, the size of which is determined by a buffer growth strategy implied by initialSize
. If initialSize
was specified and is negative, or if it was not specified, the buffer growth strategy used is Geometric Growth; otherwise it is Constant Growth. (See the component level documentation for further details.) In either case, the new buffer will have sufficient capacity to satisfy the request. If Geometric Growth is in effect, no limit is imposed on the size of buffers.
Create a sequential allocator for allocating memory blocks initially from the specified buffer
the size (in bytes) of which is indicated by the absolute value of the specified bufferSize
. Optionally specify an alignment strategy
used to align allocated memory blocks. If strategy
is not specified, Natural Alignment is used. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. If an allocate
or reserveCapacity
request cannot be satisfied from the current buffer, a new buffer is allocated, the size of which is determined by a buffer growth strategy implied by bufferSize
. If bufferSize
is negative, the buffer growth strategy used is Geometric Growth; otherwise it is Constant Growth. (See the component level documentation for further details.) In either case, the new buffer will have sufficient capacity to satisfy the request. If Geometric Growth is in effect, no limit is imposed on the size of buffers.
Create a sequential allocator for allocating memory blocks from an internal buffer the initial size (in bytes) of which is indicated by the absolute value of the specified initialSize
. The specified maxBufferSize
indicates the maximum size (in bytes) allowed for internally allocated buffers. Optionally specify an alignment strategy
used to align allocated memory blocks. If strategy
is not specified, Natural Alignment is used. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. If an allocate
or reserveCapacity
request cannot be satisfied from the current buffer, a new buffer is allocated, the size of which is determined by a buffer growth strategy implied by initialSize
. If initialSize
is negative, the buffer growth strategy used is Geometric Growth; otherwise it is Constant Growth. (See the component level documentation for further details.) In either case, the new buffer will have sufficient capacity to satisfy the request. If Geometric Growth is in effect, the geometric progression of buffer sizes is capped at maxBufferSize
. The behavior is undefined unless 0 < maxBufferSize
, and |initialSize| <= maxBufferSize
. Note that maxBufferSize
is ignored if initialSize > 0
. Also note that maxBufferSize
may be overridden by a sufficiently large value passed to allocate
or reserveCapacity
.
Create a sequential allocator for allocating memory blocks initially from the specified buffer
the size (in bytes) of which is indicated by the absolute value of the specified bufferSize
. The specified maxBufferSize
indicates the maximum size (in bytes) allowed for internally allocated buffers. Optionally specify an alignment strategy
used to align allocated memory blocks. If strategy
is not specified, Natural Alignment is used. Optionally specify a basicAllocator
used to supply memory. If basicAllocator
is 0, the currently installed default allocator is used. If an allocate
or reserveCapacity
request cannot be satisfied from the current buffer, a new buffer is allocated, the size of which is determined by a buffer growth strategy implied by bufferSize
. If bufferSize
is negative, the buffer growth strategy used is Geometric Growth; otherwise it is Constant Growth. (See the component level documentation for further details.) In either case, the new buffer will have sufficient capacity to satisfy the request. If Geometric Growth is in effect, the geometric progression of buffer sizes is capped at maxBufferSize
. The behavior is undefined unless 0 < maxBufferSize
, and |bufferSize| <= maxBufferSize
. Note that maxBufferSize
is ignored if bufferSize > 0
. Also note that maxBufferSize
may be overridden by a sufficiently large value passed to allocate
or reserveCapacity
.