Re: Autre question de C

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Subject: Re: Autre question de C
Bonjour !

Patrick Dupré a écrit :
> definitely lost: 16 bytes in 1 blocks


Ce n'est pas un vrai problème. Valgrind te dit seulement que, quand le
processus s'est terminé, il y avait 16 octets alloués qui n'ont pas été
libérés. Tu peux corriger ça en ajoutant

    free(str1);


à la fin de main().

Mais ce n'est pas très utile : quand le processus se termine, le noyau
va de toutes façons libérer toutes les ressources qu'il consomme. Les
libérer explicitement à la fin de main() ne sert à rien.

Une fuite mémoire est gênante quand tu alloues dans une boucle, que tu
perds le pointeur (que tu ne libères donc pas), puis tu re-alloues au
tour de boucle suivant... Dans ce cas la consommation mémoire du
processus augmente indéfiniment, et c'est un vrai problème.

À+,

Edgar.