Rückgabe einer Adresse mit lokalem Variablenverhalten [duplizieren]
Mögliche Duplikate:
Kann auf den Speicher einer lokalen Variablen außerhalb ihres Gültigkeitsbereichs zugegriffen werden?
Eingang:
#include <stdlib.h>
#include <stdio.h>
int func2(void);
int* func1(void);
int func2(void)
{
int* b;
b = func1();
printf("%d", *b);
printf("%d", *b);
printf("%d", *b);
}
int* func1()
{
int a = 13;
return &a;
}
int main()
{
func2();
}
Ausgabe:
13 -1077824828 -1077824828
Kann jemand erklären, was im Stack und im Betriebssystem passiert ist? Warum hat sich das Ergebnis von 13 auf Garbage geändert, nachdem der Wert des Zeigers ermittelt wurde?