std::allocator_traits<Alloc>::allocate

From cppreference.com
Memory management library
(exposition only*)
Uninitialized memory algorithms
(C++17)
(C++17)
(C++17)
(C++20)
Constrained uninitialized
memory algorithms
(C++20)
C Library

Allocators
(C++11)
(C++11)
Memory resources
Garbage collection support
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
(C++11)(until C++23)
Uninitialized storage
(until C++20*)
(until C++20*)
(until C++20*)
Explicit lifetime management
Defined in header <memory>
static pointer allocate( Alloc& a, size_type n );
(1) (since C++11)
(constexpr since C++20)
static pointer allocate( Alloc& a, size_type n, const_void_pointer hint );
(2) (since C++11)
(constexpr 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]

1) Calls a.allocate(n).
2) Additionally passes memory locality hint 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)

Parameters

a - allocator to use
n - the number of objects to allocate storage for
hint - pointer to a nearby memory location

Return value

The pointer returned by the call to a.allocate(n).

Notes

Alloc::allocate was not required to create array object until P0593R6, which made using non-default allocator for std::vector

After calling allocate and before construction of elements, pointer arithmetic of Alloc::value_type*

Example

See also

allocates uninitialized storage
(public member function of std::allocator<T>)