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)
Défini dans l'en-tête <memory>
static pointer allocate ( Alloc & a, size_type n ) ;
(1) (depuis C++11)
(constexpr depuis C++20)
static pointer allocate ( Alloc & a, size_type n, const_void_pointer hint ) ;
(2) (depuis C++11)
(constexpr depuis C++20)

Utilise l'allocateur a pour allouer n * sizeof ( Alloc :: value_type ) octets de stockage non initialisé. Un tableau de type Alloc :: value_type [ n ] est créé dans le stockage, mais aucun de ses éléments n'est construit.

1) Appelle a. allocate ( n ) .
2) Passe en plus un indicateur de localité mémoire hint . Appelle a. allocate ( n, hint ) si possible. Si ce n'est pas possible (par exemple a n'a pas de fonction membre à deux arguments allocate ), appelle a. allocate ( n ) .

Table des matières

Paramètres

a - allocateur à utiliser
n - nombre d'objets pour lesquels allouer de la mémoire
hint - pointeur vers un emplacement mémoire proche

Valeur de retour

Le pointeur retourné par l'appel à a. allocate ( n ) .

Notes

Alloc::allocate n'était pas requis pour créer un objet tableau jusqu'à P0593R6 , qui a rendu l'utilisation d'un allocateur non par défaut pour std::vector et certains autres conteneurs non bien définie selon une lecture stricte de la spécification du langage de base.

Après l'appel à allocate et avant la construction des éléments, l'arithmétique des pointeurs de Alloc :: value_type * est bien définie au sein du tableau alloué, mais le comportement est indéfini si les éléments sont accédés.

Exemple

Voir aussi

alloue de la mémoire non initialisée
(fonction membre publique de std::allocator<T> )