Espacios de nombres
Variantes

std::allocate_at_least

De cppreference.com
 
 
Biblioteca de servicios
 
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)
 
<tbody> </tbody>
Definido en el archivo de encabezado <memory>
template< class Alloc > [[nodiscard]] constexpr std::allocation_result< typename std::allocator_traits<Alloc>::pointer> allocate_at_least( Alloc& a, std::size_t n );
(desde C++23)

std::allocate_at_least llama a a.allocate_at_least(n) y devuelve su resultado si la llamada está bien formada; de lo contrario, es equivalente a return {a.allocate(n), n};.

Para un Allocator a, std::allocator_at_least intenta asignar un almacenamiento para al menos n objetos Alloc::value_type y proporciona un mecanismo alternativo (como los proporcionados por std::allocator_traits) que asigna un almacenamiento para n objetos exactos.

Parámetros

a - Un asignador de memoria utilizado para asignar almacenamiento.
n - El límite inferior del número de objetos para los que asignar almacenamiento.

Valor de retorno

a.allocate_at_least(n) si la llamada está bien formada; de lo contrario, {a.allocate(n), n}.

Excepciones

Lanza qué y cuándo lance la función de asignación seleccionada.

Notas

La función miembro allocate_at_least de los tipos Allocator se proporcionan principalmente para contenedores contiguos, p. ej., std::vector y std::basic_string, para reducir la reasignación haciendo que su capacidad coincida con el tamaño realmente asignado cuando sea posible. Debido a que std::allocate_at_least proporciona un mecanismo alternativo, se puede usar directamente cuando sea apropiado.

Dado un objeto asignador a de tipo Alloc, sea result el valor devuelto por std::allocate_at_least(a, n), el almacenamiento debe ser desasignado por a.deallocate(result.ptr, m) (generalmente llamado a través de {{c|std::allocator_traits<Alloc>::deallocate(a, result.ptr, m)} }) para evitar fugas de memoria.

El argumento m utilizado en la desasignación no debe ser menor que n ni mayor que result.count, de lo contrario, el comportamiento no está definido. Ten en cuenta que n siempre es igual a result.count si el asignador no admite allocate_at_least, lo que significa que m debe ser igual a n.


Macro de Prueba de característica
__cpp_lib_allocate_at_least

Ejemplo

Véase también

Asigna almacenamiento al menos tan grande como el tamaño solicitado.
(función miembro pública de std::allocator) [editar]
Proporciona información sobre los tipos de asignadores.
(plantilla de clase) [editar]