-1

我正在使用 valgrind 运行 memcheck。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)
4

1 回答 1

3

这意味着有 17 次不同的调用malloc(或另一个分配器函数)的返回不是free'd。这 17 个分配代表总共丢失了 204 个字节。

于 2011-07-21T05:28:58.767 回答