[C con Clase] Liberar memoria de una estructura

Adrian Ferreres Esteller raro82 en hotmail.com
Mar Dic 4 18:02:30 CET 2007


Hola Lista:

   Tengo un problema sobre liberar memoria para vosotros;  a ver si alguien puede aportar un poco de luz. 

Supongamos la siguiente estructura:

struct stBaseDatos {
      char * Datos;
      char * Datos_Inicio;
}

typedef struct stBaseDatos strBaseDatos


Donde Datos es un puntero que apunta a una cadena enorme con un monton de a tratar y Datos_Inicio es un puntero fijo a la dirección inicial de esta cadena. Dentro de la funcion main hay 3 funciones: 

int Inicializa_datos (strBaseDatos ** Informacion);
int Trato_datos (strBaseDatos * Informacion);
void Libera_datos (strBaseDatos **Informacion);

La primera reserva memora para guardar la informacion de la cadena, la segunda trata la cadena y la tercera libera la memoria reservada y se llaman asi:

strBaseDatos * Informacion;
....
Inicializa_datos (&Informacion);
Trato_datos (Informacion);
Libera_datos (&Informacion);

El código de Inicializa_datos es el siguiente:

  ....
  Informacion = (strBaseDatos *) malloc(sizeof(strBaseDatos));
  Informacion->Datos = (char *)malloc (sizeof(char)*TAMANYO_DATOS);
  Informaion->Datos_Inicio = Informacion->Datos;
....

El código de Libera_datos es el siguiente:
...
free ((*Informacion)->Datos_Inicio);
free (*Informacion);
....


El resultado de todo esto es que la memoria no se libera. La informacion a la que apunta Datos_Inicio continua estando ahi. ¿Alguien sabe porque no me funciona el free?

Muchas gracias por vuestro tiempo

_________________________________________________________________
Tecnología, moda, motor, viajes,…suscríbete a nuestros boletines para estar a la última
http://newsletters.msn.com/hm/maintenanceeses.asp?L=ES&C=ES&P=WCMaintenance&Brand=WL&RU=http%3a%2f%2fmail.live.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20071204/c1975cc5/attachment.html>


Más información sobre la lista de distribución Cconclase