Przykładowy kod:Czy bezpiecznie jest trzymać wskaźnik na zmiennej poza zakresem?
#include <stdio.h>
int main(){
int *p;
{
int v = 1;
p = &v;
}
printf("%d\n", *p);
return 0;
}
Ten kod działa poprawnie, ale nie jestem pewien, czy istnieje gwarancja, że adres v zostaną zachowane.
W tym szczególnym przypadku można zauważyć różnice w zachowaniu w zależności od ustawień optymalizacji kompilatora. Ponownie, nic nie jest ustawione w kamieniu, ponieważ standard C nie definiuje tego, co ma się wydarzyć tutaj. –