capypad
0 Tage Serie
cpp / expert
Snippet

Placement New für manuelle Speicherverwaltung

Placement New ermöglicht die Konstruktion eines Objekts an einer vorallokierten Speicheradresse. Dies ist entscheidend für Hochleistungssysteme und benutzerdefinierte Allocatoren, bei denen Heap-Fragmentierung oder Allokations-Overhead vermieden werden müssen.

snippet.cpp
cpp
1
2
3
4
5
char buffer[sizeof(MyClass)];
MyClass* obj = new (buffer) MyClass(42);
 
// Manual cleanup required:
obj->~MyClass();
Erklärung
1
new (buffer) MyClass(42)
Ruft den Konstruktor von MyClass auf und verwendet den durch 'buffer' bereitgestellten Speicher statt des Heaps.
2
obj->~MyClass()
Ruft explizit den Destruktor auf, da 'delete' nicht für Placement-New-Objekte verwendet werden kann.