Gondolf: Stack und Heap

Beitrag lesen

  1. Der Stack, zu Deutsch Stapelspeicher.

Danke, dass du nicht Kellerspeicher sagst. Der Begriff kursierte Anfang der 90er Jahre, als man plötzlich sämtliche EDV-Fachtermini mit Gewalt eindeutschen wollte, mal in diversen Fachbüchern, und Scharen von Programmierern haben sich gefragt, was das wohl sein mag.

Der Begriff Kellerspeicher taucht im deutschen Patent 1094019 auf, welches von den deutschen Erfindern des Prinzips 1957 beantragt wurde – soviel zu gewaltsamer Eindeutschung und den 90ern. Und Programmierern, die glauben, alle Ideen müssten aus dem englischen Sprachraum stammen oder zumindest englische Bezeichnungen haben, um so richtig richtig zu sein. (Dieser Schwachsinn wird an immer mehr deutschen Schulen weitergeführt: Biologie, Erdkunde, Sport wird seit einigen Jahren auf Englisch unterrichtet. Die Alpen heißen bei meiner Nichte "alps" und die Nachbarskinder rufen beim Spielen "Ready, set, go!". Erbärmlich. Traurig.)

Ich für meinen Teil bleibe beim Stapelspeicher, das ist eine sehr schöne Beschreibung des Funktionsprinzips, die auch Unbedarfte verstehen.

Das ist soweit richtig, aber all das ist nur eine Sekundärnutzung des Stacks. Der Hauptzweck ist, Rücksprungadressen beim Aufruf von Unterprogrammen (Funktionen) zu speichern, um die Ausführung des Programms nach dem "return" an der richtigen Stelle fortsetzen zu können.

Das ist _auch_ ein Zweck. Darum geht's hier aber nicht, die Frage drehte sich um "Stack"- und "Heap"-Variablen.

Außerdem ist der Stack bei manchen Rechnerplattformen begrenzt. Auf 16bit-Systemen wie DOS oder Windows 3.x und älter kann der Stack maximal 64kB groß werden, bei 32bit-Systemen kann er theoretisch 4GB umfassen

Die Adressbreite des Systems begrenzt immer jeden Speicher, nicht nur manchmal und nicht nur den Stapelspeicher. Der Stapelspeicher im Speziellen ist begrenzt, weil er üblicherweise beim Programmstart am Stück reserviert wird und dann ohne unverhältnismäßigen Aufwand nicht mehr vergrößert werden kann. Er muss also von Anfang an groß genug sein, darf aber anderen im System auch nicht den Platz wegnehmen.