MySQL 8.0.37
Source Code Documentation
|
Allocator using a Memory_resource to do the allocator. More...
#include <allocator.h>
Classes | |
struct | rebind |
Rebind the allocator as requried by the Allocator named requirement. More... | |
Public Types | |
using | value_type = T |
using | size_type = std::size_t |
using | difference_type = std::ptrdiff_t |
using | pointer = value_type * |
using | const_pointer = const value_type * |
using | reference = T & |
using | const_reference = const T & |
Public Member Functions | |
Allocator (Memory_resource memory_resource=Memory_resource()) | |
Construct a new Allocator using the given Memory_resource. More... | |
template<class U > | |
Allocator (const Allocator< U > &other) | |
Implicit conversion from other instance. More... | |
pointer | allocate (size_type n, const_pointer hint=nullptr) |
Use the Memory_resource to allocate the given number of elements of type T. More... | |
void | deallocate (pointer p, size_type size) |
Use the Memory_resource to deallocate the given pointer. More... | |
std::function< void(pointer)> | get_deleter () |
Return a Deleter function for objects allocated by this class. More... | |
template<class U , class... Args> | |
void | construct (U *p, Args &&... args) |
In-place construct a new object of the given type. More... | |
void | destroy (pointer p) |
Destroy an object but do not deallocate the memory it occupies. More... | |
size_type | max_size () const |
The maximum number of T objects that fit in memory. More... | |
Memory_resource | get_memory_resource () const |
Return the underlying Memory_resource object. More... | |
Private Attributes | |
const Memory_resource | m_memory_resource |
The underlying Memory_resource object. More... | |
Allocator using a Memory_resource to do the allocator.
A library that allocates memory should allow the user to pass a Memory_resource object which defaults to a default-constructed instance, Memory_resource(). Internally it should create the Allocator<T> classes it needs (possibly several, for different classes T), using the given Memory_resource object. Users of the library outside the server should just use the default Memory_resource. Users of the library inside the server should setup a PSI key and pass the result from memory_resource(Key)
to the library.
using mysqlns::resource::Allocator< T >::const_pointer = const value_type * |
using mysqlns::resource::Allocator< T >::const_reference = const T & |
using mysqlns::resource::Allocator< T >::difference_type = std::ptrdiff_t |
using mysqlns::resource::Allocator< T >::pointer = value_type * |
using mysqlns::resource::Allocator< T >::reference = T & |
using mysqlns::resource::Allocator< T >::size_type = std::size_t |
using mysqlns::resource::Allocator< T >::value_type = T |
|
inlineexplicit |
Construct a new Allocator using the given Memory_resource.
memory_resource | The memory resource. By default, this uses a default-constructed Memory_resource, so it uses std::malloc and std::free for allocations. |
|
inlineexplicit |
Implicit conversion from other instance.
This is required by Windows implementation of std::vector<Allocator>
.
|
inline |
Use the Memory_resource to allocate the given number of elements of type T.
n | The number of elements. |
hint | Unused. |
std::bad_alloc | on out of memory conditions. |
|
inline |
In-place construct a new object of the given type.
p | Pointer to memory area where the new object will be constructed. |
args | Arguments to pass to the constructor. |
std::bad_alloc | on out of memory conditions. |
|
inline |
Use the Memory_resource to deallocate the given pointer.
p | The pointer to deallocate. |
size | Unused. |
|
inline |
Destroy an object but do not deallocate the memory it occupies.
p | Pointer to the object. |
|
inline |
Return a Deleter function for objects allocated by this class.
Such a Deleter must be specified when constructing a smart pointer to an object created by this Allocator, for example:
Deleter | function that takes a pointer as argument and uses the Memory_resource to deallocate it. |
|
inline |
Return the underlying Memory_resource object.
|
inline |
The maximum number of T objects that fit in memory.
|
private |
The underlying Memory_resource object.