BDE 4.14.0 Production release
|
#include <bdlma_alignedallocator.h>
Public Member Functions | |
virtual void * | allocateAligned (bsls::Types::size_type size, bsls::Types::size_type alignment)=0 |
Public Member Functions inherited from bslma::Allocator | |
~Allocator () BSLS_KEYWORD_OVERRIDE | |
virtual void * | allocate (size_type size)=0 |
virtual void | deallocate (void *address)=0 |
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) |
Public Member Functions inherited from bsl::memory_resource | |
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 |
Additional Inherited Members | |
Public Types inherited from bslma::Allocator | |
typedef std::size_t | size_type |
Static Public Member Functions inherited from bslma::Allocator | |
static void | throwBadAlloc () |
Protected Member Functions inherited from bslma::Allocator | |
void * | do_allocate (std::size_t bytes, std::size_t alignment) BSLS_KEYWORD_OVERRIDE |
void | do_deallocate (void *p, std::size_t bytes, std::size_t alignment) BSLS_KEYWORD_OVERRIDE |
bool | do_is_equal (const memory_resource &other) const BSLS_KEYWORD_NOEXCEPT BSLS_KEYWORD_OVERRIDE |
This protocol provides a pure abstract interface and contract for clients and suppliers of raw aligned memory. If the requested memory cannot be returned, the contract requires that an std::bad_alloc
exception be thrown.
|
pure virtual |
Return the address of a newly allocated block of memory of at least the specified positive size
(in bytes), sufficiently aligned such that the returned address
satisfies, for the specified alignment
, 0 == (address & (alignment - 1))
. If size
is 0, a null pointer is returned with no other effect. If the requested number of appropriately aligned bytes cannot be returned, then a bsl::bad_alloc
exception is thrown, or in a non-exception build the program is terminated. The behavior is undefined unless alignment
is both a multiple of sizeof(void *)
and an integral non-negative power of two.