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.
См. также
|
(C++20) | выделяет необработанную выровненную память из базового ресурса (открытая функция-член) |
|
(C++20) | выделяет память и конструирует объект (открытая функция-член) |
| выделяет память (открытая функция-член) |
|
|
[static] | выделяет неинициализированное хранилище с помощью аллокатора (открытая статическая функция-член std::allocator_traits<Alloc>) |
| выделяет память (открытая функция-член 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