C/Visual C - ayuda por favor :s

 
Vista:

ayuda por favor :s

Publicado por mr X (2 intervenciones) el 22/06/2007 00:00:57
hola, a ver si alguien me da una mano con esto:

tengo la siguiente estructura en un .h

typedef struct tsuperentero {
char *numero;
int cant;
int signo; // 1 si es positivo, 0 si es negativo
} tsuperentero;

y las siguientes funciones:

void crear_super_entero(tsuperentero *s1, int cant, int signo)
{

s1->numero = (char *) malloc (cant * sizeof(char));

s1->cant = cant;

s1->signo = signo;

}

void eliminar_super_entero(tsuperentero *s1)
{
int i;

for(i=s1->cant-1;i>0;i--){ free((*s1).numero[i]);}

free(s1->numero);
free(s1);
}

el problema que tengo es q hay veces q me tira error al eliminar (en el for) y a veces al crear un superentero. Debe quedar algun puntero colgado por ahi. No se q estoy haciendo mal :s. Si hay algun debuggerman q me pueda ayudar :D.. gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda por favor :s

Publicado por Diego (13 intervenciones) el 22/06/2007 05:39:40
Buenas

No trate nunca pero me resulta raro lo del for. Creo que con el free(s1->numero) es suficiente.

Estaria bueno si podrias poner los mensajes de error. Eso ayuda mucho a ver el error mas facilmente

Saludos, Diego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda por favor :s

Publicado por Tom (619 intervenciones) el 22/06/2007 14:54:45
En principio, esto te sobra:

free(s1->numero);

Y además no tiene sentido lo que estás "liberando" ...

Si tu código hace lo que parece, debes eliminar el for. O sea:

void eliminar_super_entero(tsuperentero *s1) {
if(s1) {
free(s1->numero);
free(s1); /* (Suponiendo que lo hayas obtenido con malloc()) */
*s1 = 0; /* Por claridad */
}
}


¡¡ Se libera con free lo que se obtiene con malloc (o calloc) !!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda por favor :s

Publicado por mr X (2 intervenciones) el 22/06/2007 15:24:46
bueno gracias... empece a hacer lo del for pq no me liberaba la memoria si no lo hacia, y haciendolo empezo a liberarla...
voy a probar lo q me dijiste
muchas cracias :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar