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)

Inhaltsverzeichnis

Smart Pointer (seit C++11)

Smart Pointer ermöglichen eine automatische, ausnahmesichere Verwaltung der Objektlebensdauer.

Definiert im Header <memory>
Zeiger-Kategorien
(C++11)
Intelligenter Zeiger mit eindeutiger Objektbesitzsemantik
(Klassentemplate)
(C++11)
Intelligenter Zeiger mit gemeinsamer Objektbesitzsemantik
(Klassentemplate)
(C++11)
Schwache Referenz auf ein von std::shared_ptr verwaltetes Objekt
(Klassentemplate)
(veraltet in C++11) (entfernt in C++17)
Intelligenter Zeiger mit strikter Objektbesitzsemantik
(Klassentemplate)
Hilfsklassen
(C++11)
Bietet gemischte besitzerbasierte Ordnung von shared und weak Zeigern
(Klassentemplate)
(C++26)
Bietet besitzerbasiertes Hashing für shared und weak Zeiger
(Klasse)
Bietet gemischte besitzerbasierte Gleichheitsvergleiche von shared und weak Zeigern
(Klasse)
Ermöglicht einem Objekt die Erstellung eines shared_ptr , der auf sich selbst verweist
(Klassentemplate)
Ausnahme, die beim Zugriff auf einen weak_ptr ausgelöst wird, der auf ein bereits zerstörtes Objekt verweist
(Klasse)
Standard-Löscher für unique_ptr
(Klassentemplate)
Smart-Pointer-Adapter (seit C++23)
(C++23)
Interagiert mit Fremdzeiger-Settern und setzt einen Smart Pointer bei Zerstörung zurück
(Klassentemplate)
(C++23)
Erstellt einen out_ptr_t mit einem assoziierten Smart Pointer und Zurücksetzargumenten
(Funktionstemplate)
Interagiert mit Fremdzeiger-Settern, ermittelt den anfänglichen Zeigerwert von einem Smart Pointer und setzt ihn bei Zerstörung zurück
(Klassentemplate)
(C++23)
Erstellt einen inout_ptr_t mit einem assoziierten Smart Pointer und Zurücksetzargumenten
(Funktionstemplate)

Allokatoren

Allocatoren sind Klassentemplates, die eine Speicherallokationsstrategie kapseln. Dies ermöglicht es generischen Containern, die Speicherverwaltung von den Daten selbst zu entkoppeln.

Definiert im Header <memory>
der Standard-Allocator
(Klassen-Template)
stellt Informationen über Allocator-Typen bereit
(Klassen-Template)
speichert die Adresse und die tatsächliche Größe des von allocate_at_least allokierten Speichers
(Klassen-Template)
ein Tag zur Auswahl allocator-sensitiver Konstruktoren
(Tag)
prüft, ob der angegebene Typ Uses-Allocator-Konstruktion unterstützt
(Klassen-Template)
bereitet die Argumentliste passend zur vom gegebenen Typ benötigten Uses-Allocator-Konstruktionsvariante vor
(Funktions-Template)
erstellt ein Objekt des gegebenen Typs mittels Uses-Allocator-Konstruktion
(Funktions-Template)
erstellt ein Objekt des gegebenen Typs an einem bestimmten Speicherort mittels Uses-Allocator-Konstruktion
(Funktions-Template)
Definiert im Header <scoped_allocator>
implementiert einen mehrstufigen Allocator für mehrstufige Container
(Klassen-Template)
Definiert im Header <memory_resource>
Definiert im Namespace std::pmr
ein Allocator, der Laufzeit-Polymorphie basierend auf der std::pmr::memory_resource unterstützt, mit der er konstruiert wurde
(Klassen-Template)

Speicherressourcen (seit C++17)

Speicherressourcen implementieren Speicherzuweisungsstrategien, die von std::pmr::polymorphic_allocator verwendet werden können.

Definiert im Header <memory_resource>
Definiert im Namespace std::pmr
eine abstrakte Schnittstelle für Klassen, die Speicherressourcen kapseln
(Klasse)
gibt eine statische, programmweite std::pmr::memory_resource zurück, die den globalen operator new und operator delete zur Speicherallokation und -freigabe verwendet
(Funktion)
gibt eine statische std::pmr::memory_resource zurück, die keine Allokation durchführt
(Funktion)
ruft die Standard- std::pmr::memory_resource ab
(Funktion)
setzt die Standard- std::pmr::memory_resource
(Funktion)
eine Menge von Konstruktoroptionen für Pool-Ressourcen
(Klasse)
eine threadsichere std::pmr::memory_resource zur Verwaltung von Allokationen in Pools mit verschiedenen Blockgrößen
(Klasse)
eine nicht threadsichere std::pmr::memory_resource zur Verwaltung von Allokationen in Pools mit verschiedenen Blockgrößen
(Klasse)
eine spezielle std::pmr::memory_resource die den allokierten Speicher nur freigibt, wenn die Ressource zerstört wird
(Klasse)

Nicht initialisierte Speicheralgorithmen

Definiert im Header <memory>
kopiert eine Reihe von Objekten in einen nicht initialisierten Speicherbereich
(Funktions-Template)
kopiert eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Funktions-Template)
kopiert ein Objekt in einen nicht initialisierten Speicherbereich, definiert durch einen Bereich
(Funktions-Template)
kopiert ein Objekt in einen nicht initialisierten Speicherbereich, definiert durch einen Start und eine Anzahl
(Funktions-Template)
verschiebt eine Reihe von Objekten in einen nicht initialisierten Speicherbereich
(Funktions-Template)
verschiebt eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Funktions-Template)
konstruiert Objekte durch Default-Initialisierung in einem nicht initialisierten Speicherbereich, definiert durch einen Bereich
(Funktions-Template)
konstruiert Objekte durch Default-Initialisierung in einem nicht initialisierten Speicherbereich, definiert durch einen Start und eine Anzahl
(Funktions-Template)
konstruiert Objekte durch Wert-Initialisierung in einem nicht initialisierten Speicherbereich, definiert durch einen Bereich
(Funktions-Template)
konstruiert Objekte durch Wert-Initialisierung in einem nicht initialisierten Speicherbereich, definiert durch einen Start und eine Anzahl
(Funktions-Template)
(C++17)
zerstört ein Objekt an einer gegebenen Adresse
(Funktions-Template)
(C++17)
zerstört eine Reihe von Objekten
(Funktions-Template)
(C++17)
zerstört eine Anzahl von Objekten in einem Bereich
(Funktions-Template)
erstellt ein Objekt an einer gegebenen Adresse
(Funktions-Template)

Eingeschränkte Algorithmen für nicht initialisierten Speicher (seit C++20)

C++20 bietet eingeschränkte uninitialisierte Speicheralgorithmen, die Bereichsargumente oder Iterator-Sentinel-Paare akzeptieren.

Definiert in Header <memory>
Definiert in Namespace std::ranges
spezifiziert, dass bestimmte Operationen auf Iteratoren, Sentinels und Ranges nicht werfend sind
( exposition-only concept* )
kopiert einen Bereich von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt)
kopiert eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt)
kopiert ein Objekt in einen nicht initialisierten Speicherbereich, definiert durch einen Range
(Algorithmus-Funktionsobjekt)
kopiert ein Objekt in einen nicht initialisierten Speicherbereich, definiert durch einen Start und eine Anzahl
(Algorithmus-Funktionsobjekt)
bewegt einen Bereich von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt)
bewegt eine Anzahl von Objekten in einen nicht initialisierten Speicherbereich
(Algorithmus-Funktionsobjekt)
konstruiert Objekte durch Default-Initialisierung in einem nicht initialisierten Speicherbereich, definiert durch einen Range
(Algorithmus-Funktionsobjekt)
konstruiert Objekte durch Default-Initialisierung in einem nicht initialisierten Speicherbereich, definiert durch einen Start und eine Anzahl
(Algorithmus-Funktionsobjekt)
konstruiert Objekte durch Wert-Initialisierung in einem nicht initialisierten Speicherbereich, definiert durch einen Range
(Algorithmus-Funktionsobjekt)
konstruiert Objekte durch Wert-Initialisierung in einem nicht initialisierten Speicherbereich, definiert durch einen Start und eine Anzahl
(Algorithmus-Funktionsobjekt)
zerstört ein Objekt an einer gegebenen Adresse
(Algorithmus-Funktionsobjekt)
zerstört einen Bereich von Objekten
(Algorithmus-Funktionsobjekt)
zerstört eine Anzahl von Objekten in einem Bereich
(Algorithmus-Funktionsobjekt)
erstellt ein Objekt an einer gegebenen Adresse
(Algorithmus-Funktionsobjekt)

Explizite Lebensdauerverwaltung (since C++23)

Definiert im Header <memory>
erstellt implizit Objekte im angegebenen Speicher unter Wiederverwendung der Objektrepräsentation
(Funktionstemplate)

Typen für zusammengesetztes Klassendesign (since C++26)

Definiert im Header <memory>
(C++26)
Ein Wrapper, der ein dynamisch allokiertes Objekt mit wertähnlicher Semantik enthält
(Klassentemplate)
Ein polymorpher Wrapper, der ein dynamisch allokiertes Objekt mit wertähnlicher Semantik enthält
(Klassentemplate)

Sonstiges

Definiert im Header <memory>
stellt Informationen über zeigerähnliche Typen bereit
(Klassentemplate)
(C++20)
ermittelt einen Rohzeiger aus einem zeigerähnlichen Typ
(Funktionstemplate)
(C++11)
ermittelt die tatsächliche Adresse eines Objekts, selbst wenn der & Operator überladen ist
(Funktionstemplate)
(C++11)
richtet einen Zeiger in einem Puffer aus
(Funktion)
informiert den Compiler, dass ein Zeiger ausgerichtet ist
(Funktionstemplate)
prüft, ob der Zeiger auf ein Objekt zeigt, dessen Ausrichtung mindestens den angegebenen Wert hat
(Funktionstemplate)

Low-Level-Speicherverwaltung

Beinhaltet z.B. operator new , operator delete , std::set_new_handler .

Definiert im Header <new>

C-Style-Speicherverwaltung

Beinhaltet z.B. std::malloc , std::free .

Definiert im Header <cstdlib>

Nicht initialisierter Speicher (bis C++20)

Mehrere Hilfsprogramme werden bereitgestellt, um Rohspeicher zu erstellen und darauf zuzugreifen.

Definiert im Header <memory>
(deprecated in C++17) (removed in C++20)
Ein Iterator, der Standardalgorithmen ermöglicht, Ergebnisse in nicht initialisierten Speicher zu schreiben
(Klassen-Template)
(deprecated in C++17) (removed in C++20)
Beschafft nicht initialisierten Speicher
(Funktions-Template)
(deprecated in C++17) (removed in C++20)
Gibt nicht initialisierten Speicher frei
(Funktions-Template)

Garbage Collector-Unterstützung (bis C++23)

Definiert im Header <memory>
(C++11) (entfernt in C++23)
deklariert, dass ein Objekt nicht recycelt werden kann
(Funktion)
(C++11) (entfernt in C++23)
deklariert, dass ein Objekt recycelt werden kann
(Funktions-Template)
(C++11) (entfernt in C++23)
deklariert, dass ein Speicherbereich keine verfolgbaren Zeiger enthält
(Funktion)
(C++11) (entfernt in C++23)
macht den Effekt von std::declare_no_pointers rückgängig
(Funktion)
(C++11) (entfernt in C++23)
listet Zeiger-Sicherheitsmodelle auf
(Enumeration)
(C++11) (entfernt in C++23)
gibt das aktuelle Zeiger-Sicherheitsmodell zurück
(Funktion)