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)
Definido en el encabezado <memory>
static pointer allocate ( Alloc & a, size_type n ) ;
(1) (desde C++11)
(constexpr desde C++20)
static pointer allocate ( Alloc & a, size_type n, const_void_pointer hint ) ;
(2) (desde C++11)
(constexpr desde C++20)

Utiliza el asignador a para asignar n * sizeof ( Alloc :: value_type ) bytes de almacenamiento no inicializado. Se crea un array de tipo Alloc :: value_type [ n ] en el almacenamiento, pero ninguno de sus elementos está construido.

1) Llama a. allocate ( n ) .
2) Además pasa una sugerencia de localidad de memoria hint . Llama a. allocate ( n, hint ) si es posible. Si no es posible (por ejemplo, si a no tiene una función miembro de dos argumentos allocate ), llama a. allocate ( n ) .

Contenidos

Parámetros

a - asignador a utilizar
n - número de objetos para los que asignar almacenamiento
hint - puntero a una ubicación de memoria cercana

Valor de retorno

El puntero devuelto por la llamada a a. allocate ( n ) .

Notas

Alloc::allocate no estaba obligado a crear objetos de array hasta P0593R6 , que hizo que el uso de allocators no predeterminados para std::vector y otros contenedores no estuviera bien definido según una lectura estricta de la especificación del lenguaje core.

Después de llamar a allocate y antes de la construcción de elementos, la aritmética de punteros de Alloc :: value_type * está bien definida dentro del array asignado, pero el comportamiento es indefinido si se accede a los elementos.

Ejemplo

Véase también

asigna almacenamiento no inicializado
(función miembro pública de std::allocator<T> )