std::pmr::polymorphic_allocator<T>::allocate
T* allocate( std::size_t n ); | (начиная с C++17) |
Выделяет память для объектов 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/cpp/memory/polymorphic_allocator/allocate