Adresse einer Variablen

noxum

Mitglied
Guten Abend,

ich hab da mal eine kleine Frage zu den Adressen von Variablen.
Und zwar habe ich mir das immer so vorgestellt: Bei jedem Start von einem Programm werden die Variablen auf einen zufälligen Platz im Speicher gelegt, wodurch sie jedes mal eine neue Adresse besitzen.

Jetzt hab ich dies aber mal bei einem von mir geschriebenen Programm getestet und siehe da, die Adresse war immer gleich.
Also wollte ich euch einmal fragen wie das genau abläuft ? In meinem Buch "C++ von A bis Z" habe ich leider nichts gefunden. Wo liegt mein Denkfehler?


Danke für jede Antwort und noch einen schönen Abend.

Noxum
 
Hallo noxum,

wenn dein Programm immer auf dieselbe Weise abläuft (also nicht von Eingaben abhängig ist), werden in der Regel(*) bei jedem Lauf dieselben Speicheradressen vergeben. Das gilt insbesondere für Variablen auf dem Stack, welcher immer(*) an derselben Speicheradresse beginnt. Aber auch Variablen auf dem Heap landen bei identischen Speicheranfragen bei jedem Lauf normalerweise(*) an derselben Adresse.

Grüße,
Matthias

(*): Es sei denn es kommt ASLR o.ä. zum Einsatz.
 
Zuletzt bearbeitet:
Achso okey vielen Dank für deine schnelle Antwort.
Hab ich mal wieder etwas gelernt :)


Noxum

EDIT:
Ah eine Frage habe ich dann doch noch. Wird die Adresse beim ersten Ausführen festgelegt oder beim Compilieren ?
 
Zuletzt bearbeitet:
Zurück