2015-10-28 5 views
1

Je reçois cette erreur chaque fois que je lance une vérification complète de fuite de mémoire de valgrind et je ne peux vraiment pas dire où la source de cette erreur est. Mon code est en cours d'exécution et semble être correct, mais je reçois cette erreur depuis. Tout conseil serait très apprécié, merci!Valgrind fuite de mémoire quelle est cette erreur?

==2312== HEAP SUMMARY: 
==2312==  in use at exit: 26,325 bytes in 190 blocks 
==2312== total heap usage: 20,531 allocs, 20,341 frees, 197,089 bytes allocated 
==2312== 
==2312== Searching for pointers to 190 not-freed blocks 
==2312== Checked 9,805,752 bytes 
==2312== 
==2312== 272 (80 direct, 192 indirect) bytes in 1 blocks are definitely lost in loss record 53 of 67 
==2312== at 0x100009EBB: malloc (in /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so) 
==2312== by 0x1001C44A2: __Balloc_D2A (in /usr/lib/system/libsystem_c.dylib) 
==2312== by 0x1001C4DEB: __d2b_D2A (in /usr/lib/system/libsystem_c.dylib) 
==2312== by 0x1001C1443: __dtoa (in /usr/lib/system/libsystem_c.dylib) 
==2312== by 0x1001EA07A: __vfprintf (in /usr/lib/system/libsystem_c.dylib) 
==2312== by 0x10021335C: __v2printf (in /usr/lib/system/libsystem_c.dylib) 
==2312== by 0x1001E901D: vfprintf_l (in /usr/lib/system/libsystem_c.dylib) 
==2312== by 0x1001E6EB7: printf (in /usr/lib/system/libsystem_c.dylib) 
==2312== by 0x100001B02: main (in ./tldmonitor) 
==2312== 
==2312== LEAK SUMMARY: 
==2312== definitely lost: 80 bytes in 1 blocks 
==2312== indirectly lost: 192 bytes in 5 blocks 
==2312==  possibly lost: 0 bytes in 0 blocks 
==2312== still reachable: 0 bytes in 0 blocks 
==2312==   suppressed: 26,053 bytes in 184 blocks 
==2312== 
==2312== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 16 from 16) 
--2312-- 
--2312-- used_suppression:  1 OSX1011:21-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:944 suppressed: 4,096 bytes in 1 blocks 
--2312-- used_suppression:  1 OSX1011:15-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:886 suppressed: 4,096 bytes in 1 blocks 
--2312-- used_suppression:  10 OSX1011:17-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:906 suppressed: 3,392 bytes in 55 blocks 
--2312-- used_suppression:  3 OSX1011:16-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:897 suppressed: 2,816 bytes in 44 blocks 
--2312-- used_suppression:  2 OSX1011:4-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:778 suppressed: 4,152 bytes in 2 blocks 
--2312-- used_suppression:  2 OSX1011:19-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:924 suppressed: 2,592 bytes in 2 blocks 
--2312-- used_suppression:  7 OSX1011:7-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:808 suppressed: 1,680 bytes in 22 blocks 
--2312-- used_suppression:  11 OSX1011:18-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:915 suppressed: 2,312 bytes in 11 blocks 
--2312-- used_suppression:  20 OSX1011:10-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:839 suppressed: 2,461 bytes in 39 blocks 
--2312-- used_suppression:  2 OSX1011:8-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:819 suppressed: 520 bytes in 2 blocks 
--2312-- used_suppression:  2 OSX1011:20-Leak /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/default.supp:934 suppressed: 224 bytes in 5 blocks 
==2312== 
==2312== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 16 from 16) 

Après que je produis un bloc de suppression:

==2317== HEAP SUMMARY: 
==2317==  in use at exit: 26,325 bytes in 190 blocks 
==2317== total heap usage: 20,531 allocs, 20,341 frees, 197,089 bytes allocated 
==2317== 
==2317== Searching for pointers to 190 not-freed blocks 
==2317== Checked 9,805,752 bytes 
==2317== 
==2317== 272 (80 direct, 192 indirect) bytes in 1 blocks are definitely lost in loss record 53 of 67 
==2317== at 0x100009EBB: malloc (in /usr/local/Cellar/valgrind/3.11.0/lib/valgrind/vgpreload_memcheck-amd64-darwin.so) 
==2317== by 0x1001C44A2: __Balloc_D2A (in /usr/lib/system/libsystem_c.dylib) 
==2317== by 0x1001C4DEB: __d2b_D2A (in /usr/lib/system/libsystem_c.dylib) 
==2317== by 0x1001C1443: __dtoa (in /usr/lib/system/libsystem_c.dylib) 
==2317== by 0x1001EA07A: __vfprintf (in /usr/lib/system/libsystem_c.dylib) 
==2317== by 0x10021335C: __v2printf (in /usr/lib/system/libsystem_c.dylib) 
==2317== by 0x1001E901D: vfprintf_l (in /usr/lib/system/libsystem_c.dylib) 
==2317== by 0x1001E6EB7: printf (in /usr/lib/system/libsystem_c.dylib) 
==2317== by 0x100001B02: main (in ./tldmonitor) 
==2317== 
==2317== 
+1

Copie possible de [Fuite utilisateur, fuite libC++ ou faux positif] (http://stackoverflow.com/questions/29442597/user-leak-libc-leak-or-false-positive) –

+0

Est-ce une fausse fuite? Je ne peux pas sembler tracer le problème du tout dans mon code. – user1610834

+0

Si vous ne nous montrez pas votre code. ... n'est pas si facile de tout comprendre à partir de là. Utilisez aussi ** valgrind --leak-check = full --track-origins = oui ./program**. De toute façon ** l'utilisation totale du tas: 20.531 allocs, 20.341 frees ** vous devriez commencer à partir d'ici. – Michi

Répondre

0

se trouve que ce fut une fuite fausse, testé mon code sur une machine virtuelle Linux et aucune erreur. Merci.

+1

Je me suis amusé à essayer de récupérer des abus de mémoire sur Mac OS X (Yosemite ou El Capitan, j'ai oublié lequel, mais probablement El Capitan), où j'ai finalement été forcé de conclure que le problème était dans la bibliothèque, pas dans mon code qui appelait la bibliothèque. L'un des nombreux facteurs permettant de conclure que le problème était dans le «système» était que le même code fonctionnait correctement sous Linux. J'ai aussi passé beaucoup de temps à essayer de modifier le code pour que ce ne soit pas le mien qui soit en faute. C'est une nuisance. –

+0

C'était très intéressant de savoir, merci. – user1610834

+0

Assez angoissant je rencontre un problème similaire avec les doubles et les flotteurs et les imprimer. Je vais bientôt tester sur un serveur Linux et voir quel est le vrai problème. Je n'arrive pas à comprendre ce qui se passe. –