Пространства имён
Варианты
Действия

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

Материал из cppreference.com
 
 
Динамическое управление памятью
no section name
Ограниченные алгоритмы неинициализированной памяти
no section name
Поддержка сбора мусора
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)
(C++11)(до C++23)



no section name
 
 
<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody>
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++:

Номер Применён Поведение в стандарте Корректное поведение
LWG 3038 C++17 allocate может выделить хранилище неправильного размера генерирует вместо этого length_error
LWG 3237 c++17 исключение, сгенерированное allocate, несовместимо с
std::allocator::allocate
сделано совместимым

Смотрите также

выделяет сырую выровненную память из базового ресурса
(public функция-элемент) [править]
выделяет сырую память, подходящую для объекта или массива
(public функция-элемент) [править]
выделяет память и создаёт объект
(public функция-элемент) [править]
[static]
выделяет неинициализированное хранилище с помощью аллокатора
(public static функция-элемент std::allocator_traits) [править]
выделяет память
(public функция-элемент std::pmr::memory_resource) [править]