Spec-Zone.ru › C++

std::pmr::polymorphic_allocator<T>::allocate_object

template< class U >
U* allocate_object( std::size_t n = 1 );
(начиная с C++20)

Выделяет хранилище для n объектов типа U, используя базовый ресурс памяти.

Если std::numeric_limits<std::size_t>::max() / sizeof(U) < n, выбрасывает std::bad_array_new_length, в противном случае эквивалентно return static_cast<U*>(allocate_bytes(n * sizeof(U), alignof(U)));.

Параметры

n - количество объектов, для которых нужно выделить хранилище

Возвращаемое значение

Указатель на выделенное хранилище.

Примечания

Эта функция была введена для использования с полностью специализированным аллокатором std::pmr::polymorphic_allocator<>, но может быть полезна при любой специализации как краткий способ избежать необходимости выполнять повторное связывание с std::pmr::polymorphic_allocator<T> на std::pmr::polymorphic_allocator<U>.

Поскольку U не выводится, его необходимо указать в качестве аргумента шаблона при вызове этой функции.

Исключения

Выбрасывает std::bad_array_new_length, если n > std::numeric_limits<std::size_t>::max() / sizeof(U); также могут быть выброшены любые исключения при вызове resource()->allocate.

См. также

allocate_bytes
(C++20)
выделяет необработанную выровненную память из базового ресурса
(открытая функция-член)
new_object
(C++20)
выделяет память и конструирует объект
(открытая функция-член)
allocate
выделяет память
(открытая функция-член)
allocate
[static]
выделяет неинициализированное хранилище с помощью аллокатора
(открытая статическая функция-член std::allocator_traits<Alloc>)
allocate
выделяет память
(открытая функция-член std::pmr::memory_resource)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/polymorphic_allocator/allocate_object

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API