Dynamic memory management
Uninitialized storage
Garbage collection support
C Library
Low level memory management
template< class U >
U* allocate_object( std::size_t n = 1 );
(since C++20)

Allocates storage for n objects of type U using the underlying memory resource.

If SIZE_MAX / sizeof(U) < n, throws std::length_error, otherwise equivalent to return static_cast<U*>(allocate_bytes(n * sizeof(U), alignof(U)) );


n - the number of objects to allocate storage for

Return value

A pointer to the allocated storage.


This function was introduced for use with the fully-specialized allocator std::polymorphic_allocator<>, but it may be useful in any specialization as a shortcut to avoid having to rebind from std::polymorphic_allocator<T> to std::polymorphic_allocator<U>.

Since U is not deduced, it must be provided as a template argument when calling this function.


Throws std::length_error if n > SIZE_MAX / sizeof(T); may also any exceptions thrown by the call to resource()->allocate.

See also

Allocate raw aligned memory from the underlying resource
(public member function)
Allocates and constructs an object
(public member function)
Allocate memory
(public member function)
allocates uninitialized storage using the allocator
(public static member function of std::allocator_traits<Alloc>)
allocates memory
(public member function of std::pmr::memory_resource)