C reutilizará a memória de um bloco local var assim que ficar fora do escopo?
(Creio que esta questão é tecnicamente distinta deA memória de uma variável local pode ser acessada fora de seu escopo? porque é C em vez de C ++.)
Eu sei que em C você pode colocar uma variável local em um bloco e ele terá um escopo definido para esse bloco:
#include <stdio.h>
int main() {
{
int x = 5;
printf("x = '%d'\n", x);
}
// can't see x anymore
}
Minha pergunta é: ainda é seguro usar essa memória até o final da função? Se o WISE é do ponto de vista de práticas de design / codificação é uma questão separada, mas é um comportamento indefinido ou posso contar com a permanência da memória? Por exemplo:
#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);
}
Obrigado!