Beispielcode:Ist es sicher, einen Zeiger auf eine Variable außerhalb des Gültigkeitsbereichs zu halten?
#include <stdio.h>
int main(){
int *p;
{
int v = 1;
p = &v;
}
printf("%d\n", *p);
return 0;
}
Dieser Code funktioniert gut, aber ich bin mir nicht sicher, ob eine Garantie gibt es, dass die Adresse von v bleiben erhalten.
In diesem speziellen Fall können Sie auch Unterschiede im Verhalten abhängig von den Compiler-Optimierungseinstellungen bemerken. Auch hier ist nichts in Stein gemeißelt, weil der C-Standard hier nicht definiert, was passieren soll. –