C++-Programmierung/ Speicherverwaltung/ Placement new

Aus Wikibooks
Zur Navigation springen Zur Suche springen


Neben dem in C++ verwendeten Operator new, der auf dem Haldenspeicher Platz reserviert, unterstützt Standard-C++ auch den sogenannten Platzierungsoperator new (engl. placement new), der es ermöglicht, ein neues Objekt einem vorbereiteten Puffer zuzuordnen. Hier der Vergleich der unterschiedlichen Speicherreservierungen:

Nuvola-inspired-terminal.svg
1 void placement() {
2 	string *q = new string("hi");		// Normale Speicherreservierung auf dem Haldenspeicher
3 	char *buf  = new char[1000];		// In voraus reservierter Pufferspeicher
4 
5 	string *p = new (buf) string("hi");	// Placement new
6 }

Verwendet wird dieses Konzept, wenn

Nachteil ist die höhere Komplexität, für anzulegende Objekte zusätzlich Buffer vorzuhalten und zu verwalten, sowie auf deren Größenbeschränkungen acht zu geben. Derartige Aufgaben erledigt beim einfachen new die Sprache und das Betriebssystem für das Programm (und den Programmierer).