Escopo versus tempo de vida da variável

Qual é a relação entre o escopo e o tempo de vida de uma variável? Se uma variável estiver fora do escopo, a memória dela pode ser sobrescrita por outra variável ou o espaço é reservado até que a função seja deixada.

Eu estou perguntando porque eu quero saber se o código abaixo realmente funciona, ou se pode ser que * p pode ser indefinido

foo() {
  int *p;
  {
    int x = 5; 
    p = &x;
  }
  int y = *p;


}

questionAnswers(6)

yourAnswerToTheQuestion