Namespaces
Variants

std::allocator_traits<Alloc>:: allocate

From cppreference.net
Memory management library
( exposition only* )
Allocators
Uninitialized memory algorithms
Constrained uninitialized memory algorithms
Memory resources
Uninitialized storage (until C++20)
( until C++20* )
( until C++20* )
( until C++20* )

Garbage collector support (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
(C++11) (until C++23)
Определено в заголовочном файле <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 ) .

Примечания

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

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

Пример

Смотрите также

выделяет неинициализированную память
(публичная функция-член std::allocator<T> )