Spec-Zone.ru › C++

std::pmr::polymorphic_allocator<T>::allocate

T* allocate( std::size_t n );
(с C++17)
(до C++20)
[[nodiscard]] T* allocate( std::size_t n );
(с C++20)

Выделяет память для n объектов типа T с использованием базового ресурса памяти. Эквивалентно return static_cast<T*>(resource()->allocate(n * sizeof(T), alignof(T)));.

Параметры

n - количество объектов, для которых выделяется память

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

Указатель на выделенную память.

Исключения

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

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Применено к Поведение, как опубликовано Правильное поведение
LWG 3038 C++17 allocate могло выделить память неправильного размера выбрасывает length_error вместо этого
LWG 3237 C++17 исключение, выброшенное allocate было несовместимо с std::allocator::allocate сделано совместимым

См. также

allocate_bytes
(C++20)
выделение выровненной памяти из базового ресурса
(публичный член-функция)
allocate_object
(C++20)
выделение памяти, подходящей для объекта или массива
(публичный член-функция)
new_object
(C++20)
выделение и построение объекта
(публичный член-функция)
allocate
[статический]
выделение неинициализированной памяти с использованием аллокатора
(публичная статическая функция-член 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/w/cpp/memory/polymorphic_allocator/allocate

Spec-Zone.ru

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