Page 1 sur 1

Problème de fuite mémoire en C avec des structures imbriquées

Publié : jeu. nov. 21, 2024 8:09 am
par antoine06
A l'aide ! Mon programme C (qui gère une liste chaînée de structures complexes) bouffe 1Go de RAM en 10min. Valgrind montre des allocs non libérées mais je vois pas où... Des experts en debug mémoire ?

Re: Problème de fuite mémoire en C avec des structures imbriquées

Publié : jeu. nov. 21, 2024 9:09 am
par guillaume92
Poste un bout de code surtout comment tu free tes nodes. Classique : oublier de free() les pointeurs dans la structure avant de free() la structure elle-même.

Re: Problème de fuite mémoire en C avec des structures imbriquées

Publié : jeu. nov. 21, 2024 11:09 am
par nicolas_oc
J'ai eu le même problème avec des unions. Astuce : utilise -fsanitize=address à la compilation, ça t'affichera les fuites exactes en runtime. Bien plus parlant que Valgrind parfois !

Re: Problème de fuite mémoire en C avec des structures imbriquées

Publié : jeu. nov. 21, 2024 12:09 pm
par antoine06
Merci ! @74 le sanitizer m'a montré que je freeais pas les char* dans mon struct { char* name; int id; struct* next; }. Mais bizarrement, même après correction, j'ai encore des leaks...

Re: Problème de fuite mémoire en C avec des structures imbriquées

Publié : jeu. nov. 21, 2024 3:09 pm
par webmaster59
Tu utilises bien memset(0) avant free ? Certaines allocs peuvent avoir des padding bytes non initialisés. Et vérifie tes calloc() vs malloc(), j'ai déjà vu des bugs subtils là-dessus.

Re: Problème de fuite mémoire en C avec des structures imbriquées

Publié : jeu. nov. 21, 2024 8:09 pm
par guillaume92
Autre piste : les fuites peuvent venir des bibliothèques externes. T'as quoi comme dépendances ? Certaines vieilles versions de libxml2 sont catastrophiques pour ça...

Re: Problème de fuite mémoire en C avec des structures imbriquées

Publié : ven. nov. 22, 2024 12:09 am
par antoine06
PUT*** DE*** DE*** ! Je viens de trouver : j'avais un free() dans une macro conditionnelle qui ne s'exécutait jamais. 6h de ma vie perdues pour un #ifdef oublié... Merci à tous !