Mögliche Duplizieren:
Can a local variable's memory be accessed outside its scope?Zeiger auf lokale Variable in C++
Ich habe den folgenden Code in C++
int* foo()
{
int myVar = 4;
int* ptr = &myVar;
return ptr;
}
int main()
{
printf("val= %d", *foo());
return 0;
}
Der Ausgang i erhalten ist:
val = 4
Also meine Frage ist, da myVar eine lokale Variable ist, sollte es nicht weg sein, nachdem die Funktion zurückgibt? und sollte der Zeiger darauf auch kein Nullzeiger sein?
Hah bekommen! Jetzt erwähnen Sie, dass Sie die Funktion erneut aufrufen. Ich habe gerade ein kleines Experiment gemacht und eine weitere Frage tauchte auf!: D Also habe ich gerade meinen Code ein bisschen so geändert 'code int main() { printf (" * bar =% d \ n ", foo()); printf ("* bar2 =% d \ n", foo()); System ("Pause"); Rückgabe 0; } ' bar und bar2 haben den gleichen Wert! : O – 0x56794E
Das stimmt, jeder deklarierten Variablen wird ein konstanter Speicherplatz zugewiesen. Dieser Speicherort ändert sich während der Ausführung des Programms nicht. Aber, wie Benutzer 966379 es erwähnt hat, ist es nicht garantiert, ein eindeutiger Ort für alle Bereiche zu sein. –