Allokation und Deallokation von Speicher

Der new-Operator

Wir wollen einen Pointer auf ein Objekt zeigen lassen, das wir noch nicht erzeugt haben. Dazu müssen wir zuerst Speicherplatz für das Objekt beantragen und das Objekt erzeugen. Dies geschieht mit mit dem new-Operator

int* a;

*a = 3;         // Fehler: a steht standardmäßig auf dem Nullpointer
a = new int;    // Speicher in der Größe eines int alloziieren
*a = 3;         // Zuweisung jetzt ok.
a = new int(4); // In einem Schritt: Allokation und Initialisierung

Das Beispiel zeigt gleich zwei Probleme auf: Eine Dereferenzierung eines Pointers, der noch nicht initialisiert wurde (also auf den NULL-Pointer zeigt) ist nicht zulässig (und würde auch keinen Sinn machen), wird aber erst zur Laufzeit der Programms als Fehler erkannt. Hier ist also vom Programmierer Sorge zu tragen, das bei der Dereferenzierung eines Pointers (egal ob es um das Lesen oder Schreiben geht) der Pointer auf ein gültiges Objekt zeigt.