Willkommen! Einloggen Ein neues Profil erzeugen

erweitert

Übersetzer Speicherort von Variablen

geschrieben von Brian 
Übersetzer Speicherort von Variablen
03.03.2021 20:55:45
In der Vorlesung hieß es das die Variabel an einer "passenden" Stelle im Datensegment gespeichert werden.

Nun wurde gesagt das diese Daten an "Globale statische Daten" Gespeichert werden.

Ich glaube das macht aber wenig Sinn da ja nur const char c = 'a'; dort richtig wäre, und die anderen beiden int x; und int y; nicht.
Würden die anderen beiden Deklarationen nun im Heap gespeichert? Das fände ich aber auch nicht ganz richtig, da ja eigentlich gesagt wurde dass nur Daten die mit Malloc() in C oder new in C++ angelegt werden auf den Heap kommen.
Wo werden diese nun abgelegt?
Bei Globale Statische Daten hätte ich auch eher so etwas wie

int x;
void main {
...
}

erwartet da dies ja global wäre in c oder gehen wir davon aus das alles was in der main methode selbst deklariert ist auch global ist?
Ich hoffe Sie können meine Verwirrung aufklären.

Freundliche Grüße

Brian Michelson
Re: Übersetzer Speicherort von Variablen
04.03.2021 13:31:49
Hallo,

> oder gehen wir davon aus das alles was in der main methode selbst deklariert ist auch global ist?

Genau so ist es. Zumindest kommen Variablen, die in der main() Funktion deklariert wurden auch in den Bereich "globale statische Daten".

Was nicht in den Bereich "globale statische Daten" kommt sind natürlich formale Parameter und lokale Variablen von anderen Funktionen, die dann innerhalb von main() aufgerufen werden. Diese bekommen ja jeweils einen eigenen Stackframe, in dem dann die formalen Parameter und lokalen Variablen gespeichert werden.

Ich hoffe das konnte Ihre Verwirrung aufklären.

VIele Grüße,
Alexander
Sorry, in diesem Forum dürfen nur registrierte Benutzer schreiben.

Hier klicken, um sich einzuloggen