Stack: Unterschied zwischen den Versionen
Hauer (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Der '''Stack''' ist ein Teil der Programmumgebung. Der Stack ist ein Speicherbereich, auf dem lokale Variablen liegen und vermerkt werden. Der Stack besteht d…“) |
Hauer (Diskussion | Beiträge) |
||
Zeile 2: | Zeile 2: | ||
Der Stack besteht dabei aus meheren sog. '''Stackframes'''. Ein Stackframe ist ein Speicherbereich, in dem lokale Variablen eines Methodenaufrufes gespeichert werden. Ein Stackframe hat dabei konstante Größe, da die Anzahl und Größe der in einem Funktionsaufruf verwendeten Variablen immer im voraus bekannt sind (dafür müssen Variablen schließlich immer manuell deklariert werden). Wird eine Methode nun von einer anderen aufgerufen, so wird auf dem Stack der Stackframe der aufgerufenen Methode gelegt. Ist die Methode abgearbeitet und kehrt zurück zur aufrufenden Methode, wird der Stackframe der aufgerufenen Methode vom Stack entfernt. | Der Stack besteht dabei aus meheren sog. '''Stackframes'''. Ein Stackframe ist ein Speicherbereich, in dem lokale Variablen eines Methodenaufrufes gespeichert werden. Ein Stackframe hat dabei konstante Größe, da die Anzahl und Größe der in einem Funktionsaufruf verwendeten Variablen immer im voraus bekannt sind (dafür müssen Variablen schließlich immer manuell deklariert werden). Wird eine Methode nun von einer anderen aufgerufen, so wird auf dem Stack der Stackframe der aufgerufenen Methode gelegt. Ist die Methode abgearbeitet und kehrt zurück zur aufrufenden Methode, wird der Stackframe der aufgerufenen Methode vom Stack entfernt. | ||
+ | |||
+ | Der Stackframe der sich gerade in Ausführung befindenden Methode liegt dabei 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 der Stackframe der [[main]]-Methode. Wird dieser Stackframe entfernt ist der Stack leer und das Programm beendet. |
Version vom 14. Dezember 2015, 13:34 Uhr
Der Stack ist ein Teil der Programmumgebung. Der Stack ist ein Speicherbereich, auf dem lokale Variablen liegen und vermerkt werden.
Der Stack besteht dabei aus meheren sog. Stackframes. Ein Stackframe ist ein Speicherbereich, in dem lokale Variablen eines Methodenaufrufes gespeichert werden. Ein Stackframe hat dabei konstante Größe, da die Anzahl und Größe der in einem Funktionsaufruf verwendeten Variablen immer im voraus bekannt sind (dafür müssen Variablen schließlich immer manuell deklariert werden). Wird eine Methode nun von einer anderen aufgerufen, so wird auf dem Stack der Stackframe der aufgerufenen Methode gelegt. Ist die Methode abgearbeitet und kehrt zurück zur aufrufenden Methode, wird der Stackframe der aufgerufenen Methode vom Stack entfernt.
Der Stackframe der sich gerade in Ausführung befindenden Methode liegt dabei 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 der Stackframe der main-Methode. Wird dieser Stackframe entfernt ist der Stack leer und das Programm beendet.