Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: NOB2014 en 10 Junio 2016, 21:28 pm



Título: matriz de punteros de una dimensión - liberar memoria[C]
Publicado por: NOB2014 en 10 Junio 2016, 21:28 pm
Hola, gente.
Tengo una pequeña duda con él programara que dejo a continuación y es si esta bien liberada la memoria. -

Código
  1. /*
  2.  matriz de punteros de una dimensión.
  3. */
  4.  
  5. #include <stdio.h>
  6. #include <stdlib.h>
  7. #include <time.h>
  8.  
  9. #define MAX 5
  10.  
  11. int main(void) {
  12. int *arr[MAX], i;
  13. srand(time(NULL));
  14.  
  15. for( i=0; i<MAX; i++ ){
  16. *(arr+i) = (int*)malloc(sizeof(int));
  17. **(arr+i) = rand() % 100;
  18. printf( "\n %d", **(arr+i) );
  19. }
  20. for( i=0; i<MAX; i++ ){
  21. free(*(arr+i));
  22. }
  23.  
  24.  
  25. return 0;
  26.  
  27. }
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.-


Título: Re: matriz de punteros de una dimensión - liberar memoria[C]
Publicado por: AlbertoBSD en 10 Junio 2016, 22:20 pm
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..
Código
  1. int *arr = calloc(MAX,sizeof(int));
  2. for( i=0; i<MAX; i++ ){
  3. *(arr+i) = rand() % 100;
  4. printf( "\n %d", *(arr+i) );
  5. }
  6. free(arr);
  7.  

Asi te ahorras un ciclo

Saludos


Título: Re: matriz de punteros de una dimensión - liberar memoria[C]
Publicado por: NOB2014 en 10 Junio 2016, 23:10 pm
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.


Título: Re: matriz de punteros de una dimensión - liberar memoria[C]
Publicado por: AlbertoBSD en 11 Junio 2016, 02:35 am
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.

BLrJnp1x--w

Saludos.