Ver Mensaje Individual
  #2 (permalink)  
Antiguo 05/08/2016, 01:47
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: liberar memoria correctamente con free

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 original
  1. int linhas = 10;
  2. int colunas = 10;
  3. 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
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.