std::allocator_traits::allocate
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| Определено в заголовочном файле <memory>
|
||
| (1) | ||
static pointer allocate( Alloc& a, size_type n ); |
(начиная с C++11) (до C++20) |
|
[[nodiscard]] static constexpr pointer allocate( Alloc& a, size_type n ); |
(начиная с C++20) | |
| (2) | ||
static pointer allocate( Alloc& a, size_type n, const_void_pointer hint ); |
(начиная с C++11) (до C++20) |
|
[[nodiscard]] static constexpr pointer allocate( Alloc& a, size_type n, const_void_pointer hint ); |
(начиная с C++20) | |
Использует аллокатор a для выделения n*sizeof(Alloc::value_type) байт неинициализированного хранилища. В хранилище создаётся массив типа Alloc::value_type[n], но ни один из его элементов не создаётся.
1) Вызывает
a.allocate(n)2) Дополнительно передаёт подсказку локализации памяти
hint. Вызывает a.allocate(n, hint), если это возможно. Если это невозможно (например, a не имеет функции-элемента allocate с двумя аргументами), вызывает a.allocate(n)Параметры
| a | — | используемый аллокатор |
| n | — | количество объектов, для которых нужно выделить хранилище |
| hint | — | указатель на ближайшую ячейку памяти |
Возвращаемое значение
Указатель, возвращаемый вызовом a.allocate(n)
Примечание
Alloc::allocate не требовалась для создания объекта массива до P0593R6, что делало использование аллокатора не по умолчанию для std::vector и некоторых других контейнеров неэффективным в соответствии со строгим прочтением спецификации ядра языка.
После вызова allocate и перед построением элементов арифметика указателя в выделенном массиве Alloc::value_type* чётко определена, но поведение не определено при доступе к элементам.
Пример
| Этот раздел не завершён Причина: нет примера |
Смотрите также
| выделяет неинициализированное хранилище (public функция-элемент std::allocator)
|