7 Dynamische Speicherverwaltung
In einigen der bisher besprochenen Programmen wurden am Beginn Arrays mit fester Größe angelegt, in der Hoffnung, dass die Anzahl der Elemente, die in ihnen beim Programmablauf gespeichert wird gross genug ist.
Besser wäre es, erst Speicher für Arrays zu reservieren, wenn klar ist, wie groß dieser werden sollen.
Dies ist mit dem Befehl "new" möglich. Allerdings wird dieser Speicher nicht automatisch nach Verlassen
des aktuellen Blocks { } freigegeben. Dies muss nötigenfalls durch den Befehl delete geschehen.
Ein weiterer Unterschied zwischen einem Array, das so: int x[100]; oder so int* x; x = new int[100]; angelegt
wurde, ist ausserdem, dass im ersten Fall der Speicher auf dem schnellen, von der Hardware
direkt unterstützten, aber kleineren Stack-Speicher (Stapelspeicher) angelegt
wurde und im zweiten Fall auf dem grossen aber etwas
langsameren Heap-Speicher (Haldenspeicher).
Während der Stackspeicher nach dem Prinzip "last in - first out", die Einträge sozusagen übereinander stapelt, kann beim Heap ein beliebiger Speicherbereich direkt angesprochen und dauerhaft reserviert werden. Bei einem 32-Bit Prozessor können hier bis zu vier Gigabyte Speicher adressiert werden.