He creado las dos siguiente funciones, una para reservar memoria para una matriz de FilxCol y otra para liberarla. En principio creo que están bien, la cosa es que si después de llamar a estas funciones hago un printf y muestro la dirección a la que apunta matriz, no me sale NULL sino que apunta a una dirección tipo 0x7fff9db436d0. ¿por qué?

Código:
void reserva_doble_char(int fil,int col,char ***matriz)
{
int i=0;
(*matriz)=(char **)malloc(sizeof(char *)*fil);
for(i=0;i<fil;i++)
{
(*matriz)[i]=(char *)malloc(sizeof(char)*col);
}
}
Código:
void liberar_doble_char(int fil,char *** ptr)
{
int i=0;
for(i=0;i<fil;i++)
{
free((*ptr)[i]);
(*ptr)[i]=NULL;
}
free(*ptr);
(*ptr)=NULL;
}