Понимание Valgrind O / P - PullRequest
       38

Понимание Valgrind O / P

0 голосов
/ 21 июля 2011

Я запускаю memcheck, используя valgrind.o / p -

==3091== 204 bytes in 17 blocks are definitely lost in loss record 1,406 of 2,299

что это значит?

Что я думаю, что есть 204 bytes memory loss

, но что это означает

17 blocks ?

и как узнать, сколько раз эта утечка памяти происходила по той же функции?

Полная трассировка стека valgrind

==3091== 204 bytes in 17 blocks are definitely lost in loss record 1,406 of 2,299
==3091==    at 0x4A05E1C: malloc (vg_replace_malloc.c:195)
==3091==    by 0x4CA304: fs_get (fs_unix.c:38)
==3091==    by 0x4E58C1: cpystr (misc.c:74)
==3091==    by 0x4D130F: ip_nametoaddr (ip_unix.c:178)
==3091==    by 0x4D15F4: tcp_open (tcp_unix.c:192)
==3091==    by 0x4D41A5: cc_connect_http_proxy (proxy.c:164)
==3091==    by 0x4D4B0C: cc_connect (proxy.c:571)
==3091==    by 0x4D506D: ssl_open (osdep.c:353)
==3091==    by 0x4E56C3: net_open_work (mail.c:6240)
==3091==    by 0x4E558A: net_open (mail.c:6196)
==3091==    by 0x4FBA04: imap_open (imap4r1.c:841)
==3091==    by 0x4D9CB1: mail_open_work (mail.c:1355)

1 Ответ

3 голосов
/ 21 июля 2011

Это означает, что было 17 различных вызовов malloc (или другой функции-распределителя), чье возвращение не было free 'd. Эти 17 распределений представляют собой потерянные 204 байта.

...