matriz de punteros de una dimensión - liberar memoria[C]

Iniciado por NOB2014, 10 Junio 2016, 21:28 PM

0 Miembros y 1 Visitante están viendo este tema.

NOB2014

Hola, gente.
Tengo una pequeña duda con él programara que dejo a continuación y es si esta bien liberada la memoria. -

/*
matriz de punteros de una dimensión.
*/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 5

int main(void) {
int *arr[MAX], i;
srand(time(NULL));

for( i=0; i<MAX; i++ ){
*(arr+i) = (int*)malloc(sizeof(int));
**(arr+i) = rand() % 100;
printf( "\n %d", **(arr+i) );
}
for( i=0; i<MAX; i++ ){
free(*(arr+i));
}


return 0;

}

Si tienen tiempo y lo desearían necesitaría un poco de teoría al respecto si esta mal como si estuviera bien. -
Saludos y desde muchas gracias como siempre.-
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

AlbertoBSD

#1
La respuesta es si, si esta bien la forma en la que liberas memoria.

Ahira que tienes un arreglo de apuntadores.

Pero solo asignas un int a cada apuntador, cuando podrias asugnar a un solo apuntador espacio para N elemntos int

No seria mas facil asignar solo espacio para MAX elementos..
int *arr = calloc(MAX,sizeof(int));
for( i=0; i<MAX; i++ ){
*(arr+i) = rand() % 100;
printf( "\n %d", *(arr+i) );
}
free(arr);


Asi te ahorras un ciclo

Saludos
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

NOB2014

#2
Hola. -
Tiene toda la razón, lo que ocurre es que el tema que estoy estudiando es matriz de punteros de una dimensión. y para el caso me parece que vale el Ej. que saque del libro, igual me viene de maravilla porque no se si me hubiera dado cuenta por mí mismo de tu alternativa, una muy buena aclaración. -

Saludos.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

AlbertoBSD

#3
Muy bien si es el tema que estas estudiando el ejemplo sirve muy bien  ;D

Si te sirve te dejo un video que tengo del tema, no se si ya lo habias visto.

el ejemplo sirve para ver la asignacion de matrices de apuntadores de forma dinamica.

Y cada apuntador apunta a segmentos memoria de longitudes variadas.

Aun que no recuerdo si maneje la liberacion de la memoria apuntada.

[youtube=640,360]https://www.youtube.com/watch?v=BLrJnp1x--w[/youtube]

Saludos.
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW