Wann wird Speicher angelegt?
-
Hallo!
wann wird Speicher blegt?int a; //deklaration Variable int *pa; //deklaration Pointer a = 7; //definition Var.
Danke
T.o.
-
Bei jeder Deklaration wird Speicher angelegt (je nach Ort auf dem Stack oder im globalen Datensektor) - jeweils groß genug für die verwendete Variable.
In deinem Beispiel legen also die ersten zwei Befehle genug Speicher für eine int- bzw. int* Variable an, während der letzte Befehl (keine Deklaration, sondern eine Zuweisung) lediglich den Speicher manipuliert, den du vorher besorgt hat.
-
Gut...
Vielen Dank CStoll!
-
das stimmt so nicht es wird erst bei zuweisung fuer variable speicher angelegt zumindest ist das beim gcc4 so!!!!
:xmas2: <- cooler smily
-
___ schrieb:
das stimmt so nicht es wird erst bei zuweisung fuer variable speicher angelegt zumindest ist das beim gcc4 so!!!!
:xmas2: <- cooler smilyIch denke Variablen denen nie was zugewiesen wird, werden eh wegoptimiert, von daher stimmt das schon das bei der Deklaration schon Platz geschaffen wird im Speicher für die Variable.
-
Ich würde sagen, dass das von Compiler abhängt. Je nachdem wie er optimert wird er den Speicher anlegen, dass es am effizientesten ist.
-
CStoll schrieb:
Bei jeder Deklaration wird Speicher angelegt
... Definition ...
___ schrieb:
das stimmt so nicht es wird erst bei zuweisung fuer variable speicher angelegt zumindest ist das beim gcc4 so!!!!
Wenn eine Variable nie benutzt wird, dann kann ein Compiler sowas sicherlich wegoptimieren. Das ist aber ein Spezialfall. Grundsätzlich ist deine Aussage nicht korrekt.