• Miércoles 24 de Abril de 2024, 06:36

Autor Tema:  Liberar Memoria  (Leído 1617 veces)

sergio__

  • Nuevo Miembro
  • *
  • Mensajes: 12
    • Ver Perfil
Liberar Memoria
« en: Martes 21 de Junio de 2011, 02:39 »
0
Buenas gente, tengo un problemita, mi programa esta perdiendo memoria, sospecho que no estoy liberando bien donde tengo que hacerlo la situacion es la siguiente:


Tengo un arbol binario, donde en cada nodo del arbol tengo una lista enlazada y algun que otro dato estatico

este algoritmo libera la lista del nodo del arbol?? o libera una lista en una copia del nodo que esta en el stack ?
Código: C
  1.  
  2.  
  3.  
  4. void liberarListasArbol(TAB* arbol){
  5.  
  6.     //Recorrido pre-order del arbol
  7.     elArbol e;
  8.     int error1=10,error2=10,error3=10;
  9.  
  10.  
  11.  
  12.     AB_ElemCte(*arbol,&e);
  13.     lsVaciar(e.lista);
  14.     e.lista=NULL;
  15.     AB_ModifCte(arbol,&e);
  16.     AB_MoverCte(arbol,IZQ,&error1);
  17.     if (error1==TRUE){
  18.         liberarListasArbol(arbol);
  19.         AB_MoverCte(arbol,PAD,&error3);
  20.     }
  21.     AB_MoverCte(arbol,DER,&error2);
  22.     if (error2==TRUE){
  23.         liberarListasArbol(arbol);
  24.         AB_MoverCte(arbol,PAD,&error3);
  25.     }
  26.  
  27.  
  28. }
  29.  
  30. void liberarArbol(TAB* arbol){
  31.  
  32.     int error=10;
  33.     AB_MoverCte(arbol,RAIZ,&error);
  34.     liberarListasArbol(arbol);
  35.     AB_Vaciar(arbol);
  36.  
  37. }
  38.  
  39.  

las funciones lsVaciar(tListaSimple *l) y AB_Vaciar(TAB* arbol) liberan la lista y el arbol pues son del libro y ya estan testeados, el problema es si libero bien las listas de los nodos del arbol


gracias ^^!