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