001
16.07.2022, 02:15 Uhr
Hans
Library Walker (Operator)
|
Vielleicht wäre es sinnvoll, nicht nur bei Google, sondern auch mal direkt bei Wikipedia zu fragen. - Aber das nur nebenbei.
Zur Frage: Du liegst mit Deiner Vermutung schon richtig: es hat was mit dem Aufruf von Funktionen zu tun. Wenn Du eine Funktion aufrufst, muss der Prozessor sich ja irgendwo merken, wo er nach beendigung der Funktion weiter machen muss. Diese Rücksprungadresse merkt er sich auf dem Stack. Ausserdem kann man einer Funktion Parameter übergeben und die Funktion kann Parameter zurück geben. Dieser Austausch von Parametern wird bei C/C++ über den Stack organisiert. Nehmen wir an, ein Programm hat eine Funktion func, die folgendermassen deklariert ist:
C++: |
int func(int a, int b, int c);
|
Wenn diese Funktion aufgerufen wird, werden ihr 3 Parameter übergeben. Diese Daten werden vor dem Aufruf der Funktion auf den Stack geschoben, dann die Funktion aufgerufen. Jetzt liegen da aus der Sicht der Funktion zunächst eine Adresse und dann drei Parameter auf dem Stack. Dieses Gebilde nennt man Stackframe. Wenn die aufgerufene Funktion noch lokale Variablen hat (was meisstens der Fall ist), werden diese auch auf dem Stack angelegt. Damit umfasst der Stackframe also die Parameter, die einer Funktion übergeben werden, die Rücksprungadresse zum aufrufenden Programm und die lokalen Variablen der Funktion.
Das ganze ist bei Wikipedia hier noch mal ausführlicher erklärt. -- Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung. |