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.-
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
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.
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.