Allokation und Deallokation von Speicher

Um Pointer sinnvoll benutzen zu können will man sich nicht darauf beschränken einem Pointer die Adresse (und damit indirekt den Inhalt) einer schon bestehenden Variablen zuzuweisen. Vielmehr ist es interessant während der Laufzeit eines Programmes zusätzlichen Speicherplatz zu beantragen, dessen Größe zur Compilierungszeit noch nicht bekannt ist. Dies ist vor allem bei der Behandlung von Arrays und bei Listenstrukturen von Bedeutung.

Will man z. B. eine bestimmte Anzahl von Primzahlen berechnen, so sollen diese in einem Array gespeichert werden. Wenn der Benutzer die Anzahl der zu berechnenden Zahlen eingeben soll, so werden wir zu einem Problem kommen:

void primzahl(int m)
{
  int prim[m];   // Fehler: m ist nicht konstant!
  // Berechnung der Primzahlen
  ...
  // Ausgabe
  for (int i = 0; i < m; i++)
    cout << prim[i];
}

Hier hilft das Pointerkonzept weiter. Fangen wir aber erst einmal mit einem einfachen Pointer an.