¿C reutilizará la memoria de un bloque local var una vez que salga del alcance?
(Creo que esta pregunta es técnicamente distinta de¿Se puede acceder a la memoria de una variable local fuera de su alcance? porque es C en lugar de C ++.)
Sé que en C puede poner una variable local en un bloque y se definirá en ese bloque:
#include <stdio.h>
int main() {
{
int x = 5;
printf("x = '%d'\n", x);
}
// can't see x anymore
}
Mi pregunta es, ¿aún es SEGURO usar esa memoria hasta el final de la función? Si es SABIO desde la perspectiva de las prácticas de diseño / codificación es una pregunta separada, pero ¿es un comportamiento indefinido o puedo contar con que la memoria se quede? Por ejemplo:
#include <stdio.h>
int main() {
int *ptr;
{
int x = 5;
printf("x = '%d'\n", x);
// hold on to a ptr while we still know the address
ptr = &x;
}
// can't see x anymore, but is this safe?
printf("still have a ptr! '%d'\n", *ptr);
}
¡Gracias!