![]() |
MySQL 9.6.0
Source Code Documentation
|
Allocator using a Memory_resource to do the allocation. More...
#include <allocator.h>
Public Types | |
| using | value_type = T |
| using | size_type = std::size_t |
| using | difference_type = std::ptrdiff_t |
| using | propagate_on_container_move_assignment = std::true_type |
| On move-assignment for containers using this allocator, make the target container inherit the allocator and reuse the memory from the source container. More... | |
| using | propagate_on_container_copy_assignment = std::false_type |
| On copy-assignment for containers using this allocator, make the target container preserve its existing allocator and reuse its own memory if possible. More... | |
Public Member Functions | |
| Allocator (Memory_resource memory_resource=Memory_resource()) noexcept | |
| Construct a new Allocator using the given Memory_resource. More... | |
| template<class U > | |
| constexpr | Allocator (const Allocator< U > &other) noexcept |
| Implicit conversion from other instance. More... | |
| constexpr | Allocator (const Allocator &other) noexcept=default |
| constexpr Allocator & | operator= (const Allocator &other) noexcept=default |
| constexpr | Allocator (Allocator &&other) noexcept |
| constexpr Allocator & | operator= (Allocator &&other) noexcept |
| ~Allocator () noexcept=default | |
| constexpr T * | allocate (size_type n) |
| Use the Memory_resource to allocate the given number of elements of type T. More... | |
| constexpr void | deallocate (T *p, size_type size) |
| Use the Memory_resource to deallocate the given pointer. More... | |
| std::function< void(T *)> | get_deleter () |
| Return a Deleter function for objects allocated by this class. More... | |
| const Memory_resource & | get_memory_resource () const |
| Return a reference to the underlying Memory_resource object. More... | |
Private Attributes | |
| Memory_resource | m_memory_resource |
| The underlying Memory_resource object. More... | |
Allocator using a Memory_resource to do the allocation.
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 psi_memory_resource(Key) to the library.
| using mysql::allocators::Allocator< T >::difference_type = std::ptrdiff_t |
| using mysql::allocators::Allocator< T >::propagate_on_container_copy_assignment = std::false_type |
On copy-assignment for containers using this allocator, make the target container preserve its existing allocator and reuse its own memory if possible.
| using mysql::allocators::Allocator< T >::propagate_on_container_move_assignment = std::true_type |
On move-assignment for containers using this allocator, make the target container inherit the allocator and reuse the memory from the source container.
| using mysql::allocators::Allocator< T >::size_type = std::size_t |
| using mysql::allocators::Allocator< T >::value_type = T |
|
inlineexplicitnoexcept |
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. |
|
inlineconstexprnoexcept |
Implicit conversion from other instance.
This is required to exist and be implicit by the Windows implementation of std::vector.
|
constexprdefaultnoexcept |
|
inlineconstexprnoexcept |
|
defaultnoexcept |
|
inlineconstexpr |
Use the Memory_resource to allocate the given number of elements of type T.
| n | The number of elements. |
| std::bad_alloc | on out of memory conditions. |
|
inlineconstexpr |
Use the Memory_resource to deallocate the given pointer.
| p | The pointer to deallocate. |
| size | Unused. |
|
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 T* as argument and uses the Memory_resource to deallocate it. |
|
inline |
Return a reference to the underlying Memory_resource object.
|
inlineconstexprnoexcept |
|
constexprdefaultnoexcept |
|
private |
The underlying Memory_resource object.