Ce qui ne l'a supprimé les fuites dire dans Valgrind?

J'ai développé un pur-C mise en œuvre de la FIFO listes (files d'attente) dans les fichiers fifo.h et fifo.c, et nous avons écrit un programme de test de la testfifo.c qui je compile à ./bin/testfifo. Le nœud de la structure est définie dans liste.h.

J'exécute mon programme par le biais de Valgrind sur OS X 10.6 comme ce

valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./bin/testfifo

et obtenir la sortie suivante

==54688== Memcheck, a memory error detector
==54688== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==54688== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==54688== Command: bin/testfifo
==54688== 
--54688-- bin/testfifo:
--54688-- dSYM directory is missing; consider using --dsymutil=yes
==54688== 
==54688== HEAP SUMMARY:
==54688==     in use at exit: 88 bytes in 1 blocks
==54688==   total heap usage: 11 allocs, 10 frees, 248 bytes allocated
==54688== 
==54688== LEAK SUMMARY:
==54688==    definitely lost: 0 bytes in 0 blocks
==54688==    indirectly lost: 0 bytes in 0 blocks
==54688==      possibly lost: 0 bytes in 0 blocks
==54688==    still reachable: 0 bytes in 0 blocks
==54688==         suppressed: 88 bytes in 1 blocks
==54688== 
==54688== For counts of detected and suppressed errors, rerun with: -v
==54688== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

Selon la fuite résumé, il n'y a pas de fuites, mais je me demande encore ce que le "supprimé" sont des fuites. En outre, le nombre d'alloc et free ne correspondent pas, et donc je ne suis pas sûr s'il y a des fuites ou pas.

----EDIT----

De course

valgrind --tool=memcheck --leak-check=full --show-reachable=yes -v ./bin/testfifo

sur OS X 10.6 produit un assez long et confus de sortie, mais j'ai couru

valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./bin/testfifo

sur une machine Linux une obtiens ce résultat:

==32688== Memcheck, a memory error detector
==32688== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==32688== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==32688== Command: bin/testfifo
==32688== 
==32688== 
==32688== HEAP SUMMARY:
==32688==     in use at exit: 0 bytes in 0 blocks
==32688==   total heap usage: 10 allocs, 10 frees, 160 bytes allocated
==32688== 
==32688== All heap blocks were freed -- no leaks are possible
==32688== 
==32688== For counts of detected and suppressed errors, rerun with: -v
==32688== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)

alloc et gratuite est maintenant match, de sorte que le supplément d'allocation sur OS X semble être dû à un système de bibliothèque, comme cela a été suggéré.

J'ai exécuter la même commande avec le -v option, afin de révéler le 4 supprimé les erreurs, mais je n'ai pas tout comprendre facilement de nouvelles informations.

OriginalL'auteur Genba | 2011-12-28