Alocar memória para matriz 2d usando 1 chamada malloc

We can allocate memory for 2d matrix using 1 malloc call as
int (*a)[5];
int i,j;

a = malloc (sizeof (int *) * 5); // alocando 5 ponteiros e cada ponteiro aponta para um array de 5 inteiros

Como podemos liberar essa memória alocada com sucesso? Usando free (a) dá erro em tempo de execução

Usando para (i = 0; i <5; i ++) free (a [i]);

livre (a);

Isso também dá erro em tempo de execução

questionAnswers(1)

yourAnswerToTheQuestion