Espacios de nombres
Variantes
Acciones

std::allocator_traits::allocate

De cppreference.com
 
 
Gestión de memoria dinámica
Punteros inteligentes
(C++11)
(C++11)
(C++11)
(hasta C++17)
(C++11)
(C++23)
Asignadores de memoria
Recursos de memoria
Almacenamiento no inicializado
Algoritmos de memoria no inicializada
Algoritmos restringidos de memoria no inicializada
Apoyo para recolección de basura
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
(C++11)(hasta C++23)
Misceláneos
(C++20)
(C++11)
(C++11)
 
 
Definido en el archivo de encabezado <memory>
(1)
static pointer allocate( Alloc& a, size_type n );
(desde C++11)
(hasta C++20)
[[nodiscard]] static constexpr pointer allocate( Alloc& a, size_type n );
(desde C++20)
(2)
static pointer allocate( Alloc& a, size_type n,
                         const_void_pointer hint );
(desde C++11)
(hasta C++20)
[[nodiscard]] static constexpr pointer allocate( Alloc& a, size_type n,
                                                 const_void_pointer hint );
(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 se construye.

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

Contenido

[editar] Parámetros

a - El asignador a usar.
n - El número de objetos para los que asignar almacenamiento.
hint - Puntero a una ubicación de memoria cercana.

[editar] Valor de retorno

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

[editar] Notas

No se requería que Alloc::allocate creara un objeto de tipo array hasta P0593R6, lo que hizo que el uso de un asignador no construido por defecto para std::vector y algunos otros contenedores no quedara actualmente bien definido de acuerdo con la especificación del lenguaje principal.

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 no está definido si se accede a los elementos.

[editar] Véase también

Asigna almacenamiento no inicializado.
(función miembro pública de std::allocator) [editar]