Memory leaks 如何让valgrind告诉我每个未释放内存块的地址?

Memory leaks 如何让valgrind告诉我每个未释放内存块的地址?,memory-leaks,valgrind,Memory Leaks,Valgrind,Valgrind告诉我函数xxx分配了未释放的内存。好的然而,事实证明,要追踪比平常更困难 为此,我创造了许多: #ifdef DEBUG fprintf(stderr, "something happening:%lx\n", (unsigned long)ptr); #endif 所以我只需要将显示的这些ptr地址与未释放内存的地址进行匹配 如何让valgrind告诉我每个未释放内存块的地址?不幸的是,我不相信Memcheck的泄漏检查器支持打印地址。这是因为它愿意将多个未分配的块合并为一

Valgrind告诉我函数xxx分配了未释放的内存。好的然而,事实证明,要追踪比平常更困难

为此,我创造了许多:

#ifdef DEBUG
fprintf(stderr, "something happening:%lx\n", (unsigned long)ptr);
#endif
所以我只需要将显示的这些ptr地址与未释放内存的地址进行匹配


如何让valgrind告诉我每个未释放内存块的地址?

不幸的是,我不相信Memcheck的泄漏检查器支持打印地址。这是因为它愿意将多个未分配的块合并为一个“损失报告”,如果它们相似的话


如果您不介意在Memcheck中四处走动,那么应该能够将此功能添加到Valgrind源代码中的Memcheck/mc_leakcheck.c中。回家后我会看一看,并发布更详细的位置。

感谢Falaina提供了代码位置

对于valgrind-3.2.3,对我有效的位置是memcheck/mc_leakcheck.c,lc_scan_memory_WRK函数

在lc_markstack_push_WRK(地址,集团)之后添加此项;在线#472


如果(集团!=-1){VG(printf)(“集团%d:%p\n”,集团,ptr);}

这需要作为一个适当的选项添加到memcheck中