std::pmr::polymorphic_allocator<T>::allocate
Материал из cppreference.com
<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
|
сделано совместимым |
Смотрите также
(C++20) |
выделяет сырую выровненную память из базового ресурса (public функция-элемент) |
(C++20) |
выделяет сырую память, подходящую для объекта или массива (public функция-элемент) |
(C++20) |
выделяет память и создаёт объект (public функция-элемент) |
[static] |
выделяет неинициализированное хранилище с помощью аллокатора (public static функция-элемент std::allocator_traits)
|
| выделяет память (public функция-элемент std::pmr::memory_resource)
|