elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Como liberar memoria en estructura dinámica [C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Como liberar memoria en estructura dinámica [C]  (Leído 5,548 veces)
NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Como liberar memoria en estructura dinámica [C]
« en: 13 Enero 2017, 12:01 pm »

Hoa, gente ¿cómo están?
Bueno no tengo mucho para agregar, por más que busco en internet no puedo encontrar un Ej. concreto de como liberar la memoria en una estructura dinámica. -

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct{
  5. char nombre[30];
  6. char direccion[30];
  7. int edad;
  8. }alumno;
  9.  
  10. int main( void ){
  11. alumno *b=NULL;
  12. int max,i;
  13. unsigned int ch=0;
  14.  
  15. printf("\n Ingresa la cantidad de alumnos.....:");
  16. scanf("%d", &max);
  17. b = ( alumno * )malloc( sizeof(alumno)*max );
  18. for( i=0; i<max; i++){
  19. printf("\n Ingresa el nombre del alumnos [%d].....:", i+1);
  20. scanf( "%s", (b+i)->nombre );
  21. while((ch = getchar()) !='\n' && ch!=EOF);
  22. printf("\n Ingresa la direccion del alumno [%d]...:", i+1);
  23. scanf( "%s", (b+i)->direccion );
  24. while((ch = getchar()) !='\n' && ch!=EOF);
  25. printf("\n Ingresa la edad del alumno [%d]........:", i+1);
  26. scanf( "%d", &(b+i)->edad );
  27. printf( "\n ================================================\n" );
  28. }
  29.  
  30. for (i=0;i<max;i++){
  31. printf("%s\t%s\t%d\n",(*(b+i)).nombre,(*(b+i)).direccion,(*(b+i)).edad);
  32. }
  33.  
  34. return 0;
  35. }

Si alguien me pondría un Ej. relacionado con el código, Danielito muy agradecido -
Saludos.


En línea

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


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Como liberar memoria en estructura dinámica [C]
« Respuesta #1 en: 13 Enero 2017, 14:20 pm »

Igual que un int. Tienes un puntero a int; aquí tienes un puntero a la estructura.
Código
  1. free(b);


En línea

NOB2014


Desconectado Desconectado

Mensajes: 366



Ver Perfil
Re: Como liberar memoria en estructura dinámica [C]
« Respuesta #2 en: 13 Enero 2017, 14:25 pm »

Hola, gracias por ocuparte. -
Me pregunto, al ser un array de estructura no debería hacer un bucle primero para liberar cada uno de los punteros, discúlpame la ignorancia. -
En línea

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


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Como liberar memoria en estructura dinámica [C]
« Respuesta #3 en: 13 Enero 2017, 14:48 pm »

En C, no hay diferencia entre liberar un elemento o un array.
free lobera lo que malloc reservó. malloc no sabe si es un elemento o un array (malloc te retorna un void* apuntando a N bytes, sin más), por tanto, free tampoco tiene que saberlo.
En línea

geeke

Desconectado Desconectado

Mensajes: 93


Ver Perfil
Re: Como liberar memoria en estructura dinámica [C]
« Respuesta #4 en: 13 Enero 2017, 15:24 pm »

Me pregunto, al ser un array de estructura no debería hacer un bucle primero para liberar cada uno de los punteros, discúlpame la ignorancia. -

En tu caso sólo asignas un array de estructura por lo tanto basta con hacer free(b) y listo, un bucle seria necesario si tienes un array de punteros a estructura para así poder liberar cada elemento pero este no es el caso.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como crear Memoria Dinamica?
Programación Visual Basic
x64core 7 4,369 Último mensaje 4 Noviembre 2011, 11:18 am
por BlackZeroX
Cómo comparar 2 variables en memoria dinamica?
.NET (C#, VB.NET, ASP)
luison 0 1,809 Último mensaje 19 Marzo 2012, 20:57 pm
por luison
Liberar memoria asignada a una estructura
Programación C/C++
David8 1 2,117 Último mensaje 24 Mayo 2014, 23:50 pm
por rir3760
[C] (Aporte) Estructura de pila y cola con memoria dinámica
Programación C/C++
class_OpenGL 2 4,204 Último mensaje 23 Agosto 2016, 04:56 am
por class_OpenGL
C++ Estructura dinamica.
Programación C/C++
eduardo1012 1 2,200 Último mensaje 20 Noviembre 2016, 21:05 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines