>Ca confirme donc mon attitude : mettre autant de free qu'il y a de malloc.
La parité free/malloc ne garantie en rien qu'il n'y ait pas de leak, car souvent la libération de la memoire se fait a divers endroits suivant le chemin suivi par le code.
Le cas typique:
int foobar()
{
void *pt1, *pt2;
if (!(pt1 = malloc(1))) {
fprintf(stderr, "holly shit");
return(-1);
}
if (!(pt2 = malloc(1))) {
fprintf(stderr, "holly shit");
free(pt1);
return(-1);
}
/* Faire un truc interessant ici */
free(pt1);
free(pt2); /* 3 free, mais deux malloc seulement :-) */
return(0);
}
[^] # Re: Plop
Posté par Edouard Gomez . En réponse au message free() or not free() ?. Évalué à 2.
int foobar() { void *pt1, *pt2; if (!(pt1 = malloc(1))) { fprintf(stderr, "holly shit"); return(-1); } if (!(pt2 = malloc(1))) { fprintf(stderr, "holly shit"); free(pt1); return(-1); } /* Faire un truc interessant ici */ free(pt1); free(pt2); /* 3 free, mais deux malloc seulement :-) */ return(0); }