Defined in header <memory> | ||
|---|---|---|
| (1) | ||
static pointer allocate( Alloc& a, size_type n ); | (since C++11) (until C++20) | |
[[nodiscard]] static constexpr pointer allocate( Alloc& a, size_type n ); | (since C++20) | |
| (2) | ||
static pointer allocate( Alloc& a, size_type n,
const_void_pointer hint );
| (since C++11) (until C++20) | |
[[nodiscard]] static constexpr pointer allocate( Alloc& a, size_type n,
const_void_pointer hint );
| (since C++20) |
Uses the allocator a to allocate n * sizeof(Alloc::value_type) bytes of uninitialized storage. An array of type Alloc::value_type[n] is created in the storage, but none of its elements are constructed.
a.allocate(n).hint. Calls a.allocate(n, hint) if possible. If not possible (e.g. a has no two-argument member function allocate()), calls a.allocate(n).| a | - | allocator to use |
| n | - | the number of objects to allocate storage for |
| hint | - | pointer to a nearby memory location |
The pointer returned by the call to a.allocate(n).
Alloc::allocate was not required to create array object until P0593R6, which made using non-default allocator for std::vector and some other containers not actually well-defined according to the core language specification.
After calling allocate and before construction of elements, pointer arithmetic of Alloc::value_type* is well-defined within the allocated array, but the behavior is undefined if elements are accessed.
| allocates uninitialized storage (public member function of std::allocator<T>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/memory/allocator_traits/allocate