Programmieren
Heap und Stack
Um den Hauptspeicher zu organisieren verwendet ein Compiler die Technik Heap ("Halde") und Stack ("Stapel"). Heap bedeutet dabei, dass Daten an beliebigen unbenutzten Positionen im Speicher abgelegt werden. Dies führt dazu, dass der Speicher von Zeit zu Zeit aufgeräumt (Defragmentiert) werden muss.
Stack bedeutet, dass ein Speicherplatz mit einer festen Größe reserviert wird und dort die Daten nacheinander darauf abgelegt und wieder herunter genommen werden. Es kann dabei nur auf das oberste Element auf dem Stapel zugegriffen werden. Somit hat man eine effiziente Organisation der Zugriffsreihenfolge auf bestimmte Daten. Diese Technik kommt beim Aufruf von Methoden zur Anwendung.
Man stelle sich vor, dass man für die Berechnung einer komplexen Aufgabe ein weißes Blatt Papier verwendet. Diese Blatt wäre ein Stack. Für eine Nebenrechnung nimmt man nun ein weiteres Blatt und legt es auf das andere Papier. Das Papier für die Nebenrechnung stellt nun einen neuen Speicherblock (Stack-Frame) dar und hat für die darunterliegenden Blätter keine Auswirkungen. Ist die Nebenrechnung fertig entfernt man das Blatt wieder vom Stapel und trägt die Lösung der Nebenrechnung in das Papier darunter ein und dort weiter zu arbeiten, wo man vor der Nebenrechnung aufgehört hatte.