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