Java Reference
In-Depth Information
Ein bei der Programmierung zu beachtender Effekt tritt auf, wenn zum Wert 2 31
1 (2147483647),
also dem größten in einer int-Variablen darzustellenden Wert, der Wert 1 addiert werden soll.
0111..111
2147483647
+ 0000..001
+
1
-----------
-----------
1000..000
-2147483648
Wie Sie sehen, kippt hierbei das erste Bit um, das das Vorzeichen der Zahl bestimmt. Und in der
Tat ergibt sich bei dieser Addition der Wert 2 31 (-2147483648). Das bedeutet: Das Verlassen des
Wertebereichs an einer Seite führt zum Eintreten in den Wertebereich an der anderen Seite.
4.4.3 Stack und Heap
Wird ein Programm aufgerufen, so wird - vereinfacht ausgedrückt - vom Betriebssystem ein Spei-
cherblock des Hauptspeichers freigegeben, in dem das Programm laufen kann. Dieser Laufzeitspei-
cher besteht typischerweise aus vier Bereichen (siehe Abbildung 4.4). Im ersten Bereich wird der
Programmcode selbst abgelegt, der zweite Bereich enthält statische Daten, wie globale Variablen des
Programms. Die Größen dieser beiden Bereiche lassen sich bereits zur Compilierzeit ermitteln. Der
dritte und vierte Bereich des Laufzeitspeichers sind variabel groß, die Summe der beiden Größen ist
jedoch in der Regel konstant. Den dritten Bereich nennt man Stack und den vierten Bereich Heap .
Programmcode
statische Daten
Stack
Heap
Abbildung 4.4: Laufzeitspeicher
Der Stack wird für die Verwaltung von Prozedur- und Funktionsaufrufen 2 benutzt. Wird eine Funkti-
on aufgerufen, dann wird die Ausführung der gerade aktiven Funktion unterbrochen und Informatio-
nen zum Zustand der Funktion, wie die aktuellen Registerwerte, werden auf dem Stack gespeichert.
Wenn die Kontrolle nach Beendigung der aufgerufenen Funktion zurückkehrt, wird mit Hilfe der
abgespeicherten Informationen der alte Zustand wiederhergestellt. Auch lokale Variablen von Funk-
tionen werden auf dem Stack gespeichert.
Viele Programmiersprachen erlauben die Zuweisung von Speicherplatz für Daten unter Programm-
kontrolle; der Speicherplatz für diese Daten wird vom Heap genommen.
2 Prozeduren werden im Hamster-Modell in Kapitel 8 eingeführt.
Search WWH ::




Custom Search