malloc sirve para reservar un bloque de memoria de tamaño X. Una vez hecha la reserva te devuelve un puntero al inicio de dicha zona... El como uses esa memoria es irrelevante para él. Cuando tu llamas a free le pasas el puntero al inicio de la memoria a liberar y él se encarga del resto.
Lo anterior quiere decir que cada reserva que hagas debe ser liberada de forma individual. El sistema no sabe que dos regiones van a estar relacionadas e ninguna manera, luego no va a tomar la decisión e hacer liberaciones en cascada... Tu reservas y tu liberas.
En tu ejemplo, para reservar espacio para toda la matriz de una pasada tendrías que hacer:
Código C:
Ver originalint linhas = 10;
int colunas = 10;
int* inmatrix
= ( int* ) malloc ( sizeof (int) * linhas
* colunas
);
La reserva de tu ejemplo original sería útil si necesitas guardar una lista de valores en cada posición de la matriz... Que no creo que sea el caso.
Un saludo