我如何防止valgrind减少1次"免费"比" alloc"?

时间:2016-11-30 06:35:22

标签: c++ gcc clang valgrind compiler-flags

valgrind从空程序中打印以下诊断:

$cat main.cpp
int main(){}
$g++ -std=c++1z -o main main.cpp                         
$valgrind --leak-check=full --show-leak-kinds=all ./main
==26823== Memcheck, a memory error detector
==26823== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==26823== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==26823== Command: ./main
==26823== 
==26823== 
==26823== HEAP SUMMARY:
==26823==     in use at exit: 72,704 bytes in 1 blocks
==26823==   total heap usage: 1 allocs, 0 frees, 72,704 bytes allocated
==26823== 
==26823== 72,704 bytes in 1 blocks are still reachable in loss record 1 of 1
==26823==    at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==26823==    by 0x4E9D62F: ??? (in /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.22)
==26823==    by 0x4010109: call_init.part.0 (dl-init.c:78)
==26823==    by 0x40101F2: call_init (dl-init.c:36)
==26823==    by 0x40101F2: _dl_init (dl-init.c:126)
==26823==    by 0x4001309: ??? (in /lib/x86_64-linux-gnu/ld-2.19.so)
==26823== 
==26823== LEAK SUMMARY:
==26823==    definitely lost: 0 bytes in 0 blocks
==26823==    indirectly lost: 0 bytes in 0 blocks
==26823==      possibly lost: 0 bytes in 0 blocks
==26823==    still reachable: 72,704 bytes in 1 blocks
==26823==         suppressed: 0 bytes in 0 blocks
==26823== 
==26823== For counts of detected and suppressed errors, rerun with: -v
==26823== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

注意它如何陈述:
"总堆使用量: 1 allocs, 0 释放"。

对于我也正确分配和管理内存的程序,它始终为1。这似乎是lib标准本身的一个问题?我怎样才能解决这个问题?我似乎无法找到一个编译器标志来阻止这种情况。

我使用clang ++前端有同样的问题。

0 个答案:

没有答案