Namespaces
Variants

std::allocator_traits<Alloc>:: allocate_at_least

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)
static constexpr std:: allocation_result < pointer, size_type >
allocate_at_least ( Alloc & a, size_type n ) ;
(depuis C++23)

allocate_at_least appelle a. allocate_at_least ( n ) et retourne son résultat si l'appel est bien formé, sinon, c'est équivalent à return { a. allocate ( n ) , n } ; .

allocator_at_least tente d'allouer un espace de stockage pour au moins n value_type objets, et fournit un mécanisme de repli qui alloue un espace de stockage pour exactement n objets.

Table des matières

Paramètres

a - un allocateur utilisé pour allouer de la mémoire
n - la limite inférieure du nombre d'objets pour lesquels allouer de la mémoire

Valeur de retour

a. allocate_at_least ( n ) si elle est bien formée.

Sinon, std:: allocation_result < pointer, size_type > { a. allocate ( n ) , n } .

Exceptions

Lance quoi et quand la fonction d'allocation sélectionnée lance.

Notes

La fonction membre allocate_at_least des types Allocator est principalement fournie pour les conteneurs contigus, tels que std::vector et std::basic_string , afin de réduire les réallocations en faisant correspondre leur capacité à la taille réellement allouée lorsque cela est possible. Comme allocate_at_least fournit un mécanisme de repli, elle peut être utilisée directement là où cela est approprié.

Étant donné un objet allocateur a de type Alloc , soit result la valeur retournée par std:: allocator_traits < Alloc > :: allocate_at_least ( a, n ) , la mémoire doit être désallouée par a. deallocate ( result. ptr , m ) (généralement appelé via std:: allocator_traits < Alloc > :: deallocate ( a, result. ptr , m ) ) afin d'éviter une fuite de mémoire.

L'argument m utilisé dans la désallocation doit être non inférieur à n et non supérieur à result. count , sinon le comportement est indéfini. Notez que n est toujours égal à result. count si l'allocateur ne fournit pas allocate_at_least , ce qui signifie que m doit être égal à n .

Macro de test de fonctionnalité Valeur Std Fonctionnalité
__cpp_lib_allocate_at_least 202302L (C++23) allocate_at_least etc.

Exemple

Voir aussi

alloue un stockage non initialisé d'au moins la taille demandée
(fonction membre publique de std::allocator<T> )