Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Was ist ein "Stack-Frame"? (Keine Großrechner)

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
10.07.2022, 11:14 Uhr
tryn4x



Hallo

Ich hätte eine frage, weiß allerdings nicht ob meine Frage zu C++ passt.

Ich würde gerne wissen was ein "Stack-frame" ist? Und ich meine nicht die Ergebnisse in der "Google-Suche". Dort werden Großrechner beschrieben.

Ich meine eher das anlegen eines "Stack-frames" beim Aufruf einer Funktion bzw. jegliche Art von "Stack-frage". Da der Name "Stack" beinhaltet, gehe ich davon aus das dieser auf dem "Stack" angelegt wird.
Aber was genau ist ein "Stack-frame"

Wie erwähnt bietet "Google" nur Informationen zu "Großrechner" an.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: