C variable local reutilizada

Por lo que sé después de cada llamada a función, las variables locales se descartan. Pero cuando ejecuté este código, las variables conservan su valor anterior. ¿Cuál es este comportamiento?

Compilador: gcc 4.8.4

#include<stdio.h>
void t();
int main(void){
    t();
    t();
    t();
    return 0;
}

void t(){
    int i;
    i++;
    printf("%d\n",i);
}

Salida:

4bh1@mybox:~/C-fi$ ./test 
1
2
3

Respuestas a la pregunta(3)

Su respuesta a la pregunta