Springe zum Hauptinhalt
Grundlagen der Informatik I & II und Informatik I & II
Dynamische Datenstrukturen
Dynamische Speicherverwaltung

Dynamische Speicherverwaltung


kurz und knapp

Mit Hilfe der dynamischen Speicherverwaltung lässt sich Speicherplatz zur Laufzeit des Programms anfordern.


Wie funktionierts?

Der Befehl dazu lautet new. Damit das Programm auf den neuen Speicher zugreifen kann, liefert new einen Zeiger darauf.

int *point = new int;   erzeugt einen Pointer auf einen Integer.

Der Befehl delete gibt den dynamisch angeforderten Speicher wieder frei:
delete point;

Da der Pointer aber nach wie vor die Adresse dieses Speicherbereichs beinhaltet muss er auf NULL gesetzt werden:
point = NULL;


Auf diese Weise sind wir nun in der Lage Arrays anzulegen, deren Größe vom Nutzer des Programms abgefragt werden kann:
int len = 0;
cin >> len;
int *array = new int [len];
delete [ ]array; array = NULL;


Und Pointer auf Strukturen?

Zunächst die Struktur:
struct kind
{
    int gebjahr;
    char land [3];
    bool lieb;
};


Dann der Pointer:
kind *ariane = new kind;

Der Zugriff aus den Inhalt: Zugriff auf den Inhalt des Pointers auf die Eigenschaft Land
(*ariane).land = "GER";

Und jetzt wirds knifflig: Viele Kinder ...
kind *ariane = new kind [5];

Zugriff auf den Inhalt des Pointers an der Stelle 2 auf die Eigenschaft Land
(ariane+2)→lieb = true;