PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C] Wo ist das Speicherleck?



Trillian
10-08-2002, 13:54
Hallo,
ich habe gerade festgestellt, dass in folgendem Code ein Memory Leak drin ist... aber ich seh meinen Fehler einfach nicht!



char *leak(char *input)
{
char * result;
result = g_strdup(input); /* malloc'ed speicher und kopiert input da rein */
return result;

}

int main()
{
int i;
char *foo, *tmp;

foo = g_strdup("Bar");

for (;;)
{
tmp = g_strdup(foo);
foo = leak(tmp);
g_free(tmp); /* free() eben */
}
return 0;
}


Was mache ich da falsch?

Danke,
Trillian

anda_skoa
10-08-2002, 14:32
Du erzeugst in der Schleife zweimal eine Kopie, aber du löschst nur eine.

Ciao,
_

Trillian
10-08-2002, 20:19
Oh, tatsächlich. Das eigentliche Leck war btw doch im Code der anderen Funktion, nur den relevanten Teil habe ich nicht gepastet :rolleyes:

Jedenfalls funzt nun alles wieder :)

Danke