Spec-Zone.ru › C++

std::allocator_traits<Alloc>::allocate

Объявлено в заголовочном файле <memory>
static pointer allocate( Alloc& a, size_type n );
(1) (начиная с C++11)
(constexpr начиная с C++20)
static pointer allocate( Alloc& a, size_type n, const_void_pointer hint );
(2) (начиная с C++11)
(constexpr начиная с 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).

Примечания

До принятия P0593R6 от Alloc::allocate не требовалось создавать объект массива. Согласно строгому прочтению спецификации основного языка, это делало использование нестандартного аллокатора для std::vector и некоторых других контейнеров неопределённым.

После вызова allocate и до конструирования элементов арифметика указателей типа Alloc::value_type* корректно определена в пределах выделенного массива, но поведение не определено при доступе к элементам.

Пример

См. также

allocate
выделяет неинициализированное хранилище
(открытая функция-член std::allocator<T>)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/memory/allocator_traits/allocate

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API