Namespaces
Variants

Memory management library

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)

Table des matières

Pointeurs intelligents (depuis C++11)

Les pointeurs intelligents permettent une gestion automatique et sûre face aux exceptions de la durée de vie des objets.

Défini dans l'en-tête <memory>
Catégories de pointeurs
(C++11)
pointeur intelligent avec sémantique de propriété exclusive d'objet
(modèle de classe)
(C++11)
pointeur intelligent avec sémantique de propriété partagée d'objet
(modèle de classe)
(C++11)
référence faible à un objet géré par std::shared_ptr
(modèle de classe)
(obsolète en C++11) (supprimé en C++17)
pointeur intelligent avec sémantique de propriété stricte d'objet
(modèle de classe)
Classes auxiliaires
(C++11)
fournit un ordonnancement basé sur le propriétaire de types mixtes pour les pointeurs partagés et faibles
(modèle de classe)
(C++26)
fournit un hachage basé sur le propriétaire pour les pointeurs partagés et faibles
(classe)
fournit des comparaisons d'égalité basées sur le propriétaire de types mixtes pour les pointeurs partagés et faibles
(classe)
permet à un objet de créer un shared_ptr se référant à lui-même
(modèle de classe)
exception levée lors de l'accès à un weak_ptr qui référence un objet déjà détruit
(classe)
suppresseur par défaut pour unique_ptr
(modèle de classe)
Adaptateurs de pointeurs intelligents (depuis C++23)
(C++23)
interagit avec les définisseurs de pointeurs étrangers et réinitialise un pointeur intelligent lors de la destruction
(modèle de classe)
(C++23)
crée un out_ptr_t avec un pointeur intelligent associé et des arguments de réinitialisation
(modèle de fonction)
interagit avec les définisseurs de pointeurs étrangers, obtient la valeur initiale du pointeur d'un pointeur intelligent, et le réinitialise lors de la destruction
(modèle de classe)
(C++23)
crée un inout_ptr_t avec un pointeur intelligent associé et des arguments de réinitialisation
(modèle de fonction)

Allocateurs

Les allocateurs sont des modèles de classe encapsulant une stratégie d'allocation mémoire. Cela permet aux conteneurs génériques de découpler la gestion de la mémoire des données elles-mêmes.

Défini dans l'en-tête <memory>
l'allocateur par défaut
(modèle de classe)
fournit des informations sur les types d'allocateur
(modèle de classe)
enregistre l'adresse et la taille réelle de la mémoire allouée par allocate_at_least
(modèle de classe)
une balise utilisée pour sélectionner les constructeurs sensibles aux allocateurs
(balise)
vérifie si le type spécifié prend en charge la construction avec allocateur
(modèle de classe)
prépare la liste d'arguments correspondant au type de construction avec allocateur requis par le type donné
(modèle de fonction)
crée un objet du type donné au moyen de la construction avec allocateur
(modèle de fonction)
crée un objet du type donné à un emplacement mémoire spécifié au moyen de la construction avec allocateur
(modèle de fonction)
Défini dans l'en-tête <scoped_allocator>
implémente un allocateur multi-niveaux pour les conteneurs multi-niveaux
(modèle de classe)
Défini dans l'en-tête <memory_resource>
Défini dans l'espace de noms std::pmr
un allocateur qui prend en charge le polymorphisme à l'exécution basé sur la std::pmr::memory_resource avec laquelle il est construit
(modèle de classe)

Ressources mémoire (depuis C++17)

Les ressources mémoire implémentent des stratégies d'allocation de mémoire qui peuvent être utilisées par std::pmr::polymorphic_allocator .

Défini dans l'en-tête <memory_resource>
Défini dans l'espace de noms std::pmr
une interface abstraite pour les classes qui encapsulent les ressources mémoire
(classe)
retourne une std::pmr::memory_resource statique à l'échelle du programme qui utilise les operator new et operator delete globaux pour allouer et désallouer la mémoire
(fonction)
retourne une std::pmr::memory_resource statique qui n'effectue aucune allocation
(fonction)
obtient la std::pmr::memory_resource par défaut
(fonction)
définit la std::pmr::memory_resource par défaut
(fonction)
un ensemble d'options de constructeur pour les ressources de pool
(classe)
une std::pmr::memory_resource thread-safe pour gérer les allocations dans des pools de différentes tailles de blocs
(classe)
une std::pmr::memory_resource non thread-safe pour gérer les allocations dans des pools de différentes tailles de blocs
(classe)
une std::pmr::memory_resource à usage spécial qui libère la mémoire allouée uniquement lorsque la ressource est détruite
(classe)

Algorithmes de mémoire non initialisée

Défini dans l'en-tête <memory>
copie une plage d'objets vers une zone mémoire non initialisée
(modèle de fonction)
copie un nombre d'objets vers une zone mémoire non initialisée
(modèle de fonction)
copie un objet vers une zone mémoire non initialisée, définie par une plage
(modèle de fonction)
copie un objet vers une zone mémoire non initialisée, définie par un début et un compte
(modèle de fonction)
déplace une plage d'objets vers une zone mémoire non initialisée
(modèle de fonction)
déplace un nombre d'objets vers une zone mémoire non initialisée
(modèle de fonction)
construit des objets par initialisation par défaut dans une zone mémoire non initialisée, définie par une plage
(modèle de fonction)
construit des objets par initialisation par défaut dans une zone mémoire non initialisée, définie par un début et un compte
(modèle de fonction)
construit des objets par initialisation par valeur dans une zone mémoire non initialisée, définie par une plage
(modèle de fonction)
construit des objets par initialisation par valeur dans une zone mémoire non initialisée, définie par un début et un compte
(modèle de fonction)
(C++17)
détruit un objet à une adresse donnée
(modèle de fonction)
(C++17)
détruit une plage d'objets
(modèle de fonction)
(C++17)
détruit un nombre d'objets dans une plage
(modèle de fonction)
crée un objet à une adresse donnée
(modèle de fonction)

Algorithmes de mémoire non initialisée contraints (depuis C++20)

C++20 fournit des algorithmes de mémoire non initialisée contraints qui acceptent des arguments de plage ou des paires itérateur-sentinelle.

Défini dans l'en-tête <memory>
Défini dans l'espace de noms std::ranges
spécifie que certaines opérations sur les itérateurs, sentinelles et plages ne lèvent pas d'exception
( concept d'exposition uniquement* )
copie une plage d'objets vers une zone mémoire non initialisée
(objet fonction algorithme)
copie un nombre d'objets vers une zone mémoire non initialisée
(objet fonction algorithme)
copie un objet vers une zone mémoire non initialisée, définie par une plage
(objet fonction algorithme)
copie un objet vers une zone mémoire non initialisée, définie par un début et un compte
(objet fonction algorithme)
déplace une plage d'objets vers une zone mémoire non initialisée
(objet fonction algorithme)
déplace un nombre d'objets vers une zone mémoire non initialisée
(objet fonction algorithme)
construit des objets par initialisation par défaut dans une zone mémoire non initialisée, définie par une plage
(objet fonction algorithme)
construit des objets par initialisation par défaut dans une zone mémoire non initialisée, définie par un début et un compte
(objet fonction algorithme)
construit des objets par initialisation par valeur dans une zone mémoire non initialisée, définie par une plage
(objet fonction algorithme)
construit des objets par initialisation par valeur dans une zone mémoire non initialisée, définie par un début et un compte
(objet fonction algorithme)
détruit un objet à une adresse donnée
(objet fonction algorithme)
détruit une plage d'objets
(objet fonction algorithme)
détruit un nombre d'objets dans une plage
(objet fonction algorithme)
crée un objet à une adresse donnée
(objet fonction algorithme)

Gestion explicite de la durée de vie (depuis C++23)

Défini dans l'en-tête <memory>
crée implicitement des objets dans un stockage donné avec la représentation d'objet réutilisée
(modèle de fonction)

Types pour la conception de classes composites (depuis C++26)

Défini dans l'en-tête <memory>
(C++26)
un wrapper contenant un objet alloué dynamiquement avec une sémantique de valeur
(modèle de classe)
un wrapper polymorphe contenant un objet alloué dynamiquement avec une sémantique de valeur
(modèle de classe)

Divers

Défini dans l'en-tête <memory>
fournit des informations sur les types de type pointeur
(modèle de classe)
(C++20)
obtient un pointeur brut à partir d'un type de type pointeur
(modèle de fonction)
(C++11)
obtient l'adresse réelle d'un objet, même si l'opérateur & est surchargé
(modèle de fonction)
(C++11)
aligne un pointeur dans un tampon
(fonction)
informe le compilateur qu'un pointeur est aligné
(modèle de fonction)
vérifie si le pointeur pointe vers un objet dont l'alignement a au moins la valeur donnée
(modèle de fonction)

Gestion de la mémoire bas niveau

Inclut par exemple operator new , operator delete , std::set_new_handler .

Défini dans l'en-tête <new>

Gestion de la mémoire de style C

Inclut par exemple std::malloc , std::free .

Défini dans l'en-tête <cstdlib>

Stockage non initialisé (jusqu'à C++20)

Plusieurs utilitaires sont fournis pour créer et accéder au stockage brut.

Défini dans l'en-tête <memory>
(obsolète en C++17) (supprimé en C++20)
un itérateur qui permet aux algorithmes standards de stocker des résultats dans une mémoire non initialisée
(modèle de classe)
(obsolète en C++17) (supprimé en C++20)
obtient un stockage non initialisé
(modèle de fonction)
(obsolète en C++17) (supprimé en C++20)
libère le stockage non initialisé
(modèle de fonction)

Support du ramasse-miettes (jusqu'à C++23)

Défini dans l'en-tête <memory>
(C++11) (supprimé en C++23)
déclare qu'un objet ne peut pas être recyclé
(fonction)
(C++11) (supprimé en C++23)
déclare qu'un objet peut être recyclé
(modèle de fonction)
(C++11) (supprimé en C++23)
déclare qu'une zone mémoire ne contient pas de pointeurs traçables
(fonction)
(C++11) (supprimé en C++23)
annule l'effet de std::declare_no_pointers
(fonction)
(C++11) (supprimé en C++23)
énumère les modèles de sécurité des pointeurs
(énumération)
(C++11) (supprimé en C++23)
retourne le modèle de sécurité des pointeurs actuel
(fonction)