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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Liberar memoria en listas simplemente enlazada [C]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Liberar memoria en listas simplemente enlazada [C]  (Leído 3,830 veces)
DanielPy

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Liberar memoria en listas simplemente enlazada [C]
« en: 26 Junio 2015, 22:01 pm »

Hola gente.
Los molesto porque estoy estudiando listas simples enlazadas, créanme que nunca un tema de c me cuesta tanto entenderlo, el caso es que encontré un video con este código y me pareció sencillo para ver si de una vez por todas  entiendo estas venditas listas.-
La pregunta es ¿debo liberar memoria reservada con malloc?.-

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct{
  5. struct nodo* siguiente;
  6. char* nombre;
  7. } nodo;
  8.  
  9. nodo* primer = NULL;
  10. nodo* ultimo = NULL;
  11.  
  12. void agregar(nodo* _nodo){
  13. _nodo -> siguiente = NULL;
  14. if(primer == NULL){
  15. primer = _nodo;
  16. ultimo = _nodo;
  17. }else{
  18. ultimo -> siguiente = _nodo;
  19. ultimo = _nodo;
  20. }
  21. }
  22.  
  23. int main(){
  24. nodo* primerNodo = malloc(sizeof(nodo));
  25. primerNodo -> nombre = "Primer Elemento";
  26. nodo* segundoNodo = malloc(sizeof(nodo));
  27. segundoNodo -> nombre = "Segundo Elemento";
  28. nodo* tercerNodo = malloc(sizeof(nodo));
  29. tercerNodo -> nombre = "Tercer Elemento";
  30.  
  31. agregar(primerNodo);
  32. agregar(segundoNodo);
  33. agregar(tercerNodo);
  34. nodo* i = primerNodo;
  35. while(i != NULL){
  36. printf("%s\n", i -> nombre);
  37. i = i -> siguiente;
  38. }
  39. return 0;
  40. }


Desde ya muchas gracias.-

Saludos.
Daniel


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: Liberar memoria en listas simplemente enlazada [C]
« Respuesta #1 en: 26 Junio 2015, 22:05 pm »

Evidentemente. Sinó la memoria quedará estorbando y gastando espacio. Cada vez que borras un nodo, libera la memoria.

Si hablas de hacerlo al finalizar el programa, no tiene tanta importancia. Pero es preferible liberar.


En línea

DanielPy

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Liberar memoria en listas simplemente enlazada [C]
« Respuesta #2 en: 26 Junio 2015, 23:10 pm »

¿Debo suponer que si no la libera el programa el compilador lo realiza igual al cerrarse el programa?.-

Saludos.
Daniel
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: Liberar memoria en listas simplemente enlazada [C]
« Respuesta #3 en: 26 Junio 2015, 23:22 pm »

El compilador solo compila, no hace nada en tiempo de ejecución.

El sistema operativo será el que se encargue de liberar la memoria cuando el programa cierre.

Pero por si por alguna razón el SO no la liberara, la mejor práctica es liberarla explicitamente.
En línea

DanielPy

Desconectado Desconectado

Mensajes: 145



Ver Perfil
Re: Liberar memoria en listas simplemente enlazada [C]
« Respuesta #4 en: 26 Junio 2015, 23:27 pm »

Gracias ivancea96 ha sido de muchas ayuda tus post.-

Daniel
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.-
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines