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
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.