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
*a = 3; // Fehler: a steht standardmäßig auf dem Nullpointer
int* a;
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.