Stack: Unterschied zwischen den Versionen
Hauer (Diskussion | Beiträge) |
|||
Zeile 1: | Zeile 1: | ||
− | Der '''Stack''' ist ein Teil der Programmumgebung. | + | Der '''Stack''' ist ein Teil der Programmumgebung. Er ist ein '''Speicherbereich''', auf dem [[lokale Variablen]] liegen und vermerkt werden. |
− | Der Stack besteht | + | Der Stack besteht aus mehreren sogenannten '''Stackframes'''. Ein Stackframe ist ein Speicherbereich, in dem lokale Variablen eines [[Methode|Methodenaufrufes]] gespeichert werden. Er hat eine '''konstante Größe''', da die Anzahl und Größe der in einem Funktionsaufruf verwendeten Variablen durch deren Deklaration immer im Voraus bekannt sind. |
− | Der Stackframe der sich gerade in Ausführung befindenden Methode liegt | + | Wird eine Methode von einer anderen aufgerufen, so wird der Stackframe der aufgerufenen Methode auf den Stack gelegt. Ist die Methode abgearbeitet und es wird zu der aufrufenden Methode zurückgekehrt, wird der Stackframe der aufgerufenen Methode vom Stack entfernt. |
+ | |||
+ | Der Stackframe der sich gerade '''in Ausführung''' befindenden Methode liegt immer ganz '''oben''' auf dem Stack. Der Stackframe unter diesem ist der Stackframe der Methode, zu der zurückgekehrt wird. | ||
+ | |||
+ | Der unterste Stackframe ist entsprechend immer derjenige der '''[[main]]-Methode'''. Wird dieser Stackframe entfernt, ist der Stack leer und das Programm beendet. |
Version vom 13. März 2016, 21:35 Uhr
Der Stack ist ein Teil der Programmumgebung. Er ist ein Speicherbereich, auf dem lokale Variablen liegen und vermerkt werden.
Der Stack besteht aus mehreren sogenannten Stackframes. Ein Stackframe ist ein Speicherbereich, in dem lokale Variablen eines Methodenaufrufes gespeichert werden. Er hat eine konstante Größe, da die Anzahl und Größe der in einem Funktionsaufruf verwendeten Variablen durch deren Deklaration immer im Voraus bekannt sind.
Wird eine Methode von einer anderen aufgerufen, so wird der Stackframe der aufgerufenen Methode auf den Stack gelegt. Ist die Methode abgearbeitet und es wird zu der aufrufenden Methode zurückgekehrt, wird der Stackframe der aufgerufenen Methode vom Stack entfernt.
Der Stackframe der sich gerade in Ausführung befindenden Methode liegt immer ganz oben auf dem Stack. Der Stackframe unter diesem ist der Stackframe der Methode, zu der zurückgekehrt wird.
Der unterste Stackframe ist entsprechend immer derjenige der main-Methode. Wird dieser Stackframe entfernt, ist der Stack leer und das Programm beendet.