Tema: Free vs NULL
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2013, 21:21
AlanFC
 
Fecha de Ingreso: septiembre-2011
Mensajes: 42
Antigüedad: 12 años, 7 meses
Puntos: 3
Free vs NULL

Hola, tengo una duda respecto a la funcion "free" y sobre asignar NULL a un puntero ¿Cuando se hace cada cual? y ¿Cual es la diferencia?.

Por ejemplo, estoy definiendo mi arbol binario...

Código C:
Ver original
  1. typedef int tipoElem;
  2.  
  3. typedef struct nodo{
  4.         tipoElem info;
  5.         struct nodo *izq;
  6.         struct nodo *der;
  7. }tNodo;
  8.  
  9. typedef struct{
  10.         tNodo *raiz;
  11.         int nElems;
  12. }tABB;
  13.  
  14. // inicializa un ABB como vacío
  15. void initTree (tABB *T){
  16.      T->raiz = NULL;
  17.      T->nElems = 0;
  18. }
  19.  
  20. // elimina todos los elementos de un ABB T, dejándolo vacío
  21. void clearHelp (tNodo *nodo){
  22.      if (nodo == NULL) return;
  23.      clearHelp(nodo->izq);
  24.      clearHelp(nodo->der);
  25.      free((void *)nodo);
  26. }
  27. void clear (tABB *T){
  28.      clearHelp(T->raiz);
  29.      T->raiz = NULL;
  30.      T->nElems = 0;

Seria lo mismo si en la funcion clear, en vez de usar free, a cada nodo asignarle NULL?

Gracias de antemano.
Saludos!
__________________
"Porque nada se...
quiero saberlo todo"