Foros del Web » Programación para mayores de 30 ;) » C/C++ »

como usar malloc correctamente

Estas en el tema de como usar malloc correctamente en el foro de C/C++ en Foros del Web. tengo que hacer un trabajo para lo cual necesito matrices de largo variable. Se que tengo que hacerlas con malloc, pero estoy tratando de entender ...
  #1 (permalink)  
Antiguo 06/06/2012, 16:34
 
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta como usar malloc correctamente

tengo que hacer un trabajo para lo cual necesito matrices de largo variable. Se que tengo que hacerlas con malloc, pero estoy tratando de entender como se trabaja con una matriz generada de esta forma. Los arreglos unidimensionales me resultan, pero no se como generar una en mas de una dimension.
Muchas gracias
  #2 (permalink)  
Antiguo 06/06/2012, 17:09
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: como usar malloc correctamente

Las matrices son de dos dimensiona, lo que necesitas es un doble puntero al dato de la matriz. Para que lo veas bien vos tendias un array de punteros que apuntan a array de enteros.

Entonce lo primero que tenes que hacer es reservar memoria para N punteros a entero.

int **M = (int **) malloc ( N * sizeof(int * ) );

Luego por cada uno de esos punteros tenes que reservar memoria para P enteros.

for( i = 0 ; i < M ; i++ ) M[i] = (int *) malloc ( P * sizeof(int));

Y eso es todo....fijate si entendes bien.
  #3 (permalink)  
Antiguo 06/06/2012, 18:23
 
Fecha de Ingreso: mayo-2012
Mensajes: 5
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: como usar malloc correctamente

voi a ver si me resulta
y con respecto al free? tengo que liberar solamente M? o P tambien?
  #4 (permalink)  
Antiguo 06/06/2012, 19:25
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: como usar malloc correctamente

Tenes que hacer a la inversa..primero liberas cada puntero a entero

free(M[i]);

Y luego el puntero a punteros:

free(M);

Para que se entienda mas el otro tema...pensa que tenes que almacenar N vectores de P posiciones para formar tu matriz..... Saludos

Etiquetas: correctamente, malloc, usar, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:12.