валгринд не улавливает очевидную потерянную память - PullRequest
0 голосов
/ 27 января 2012

Я использовал valgrind раньше, и это было очень полезно. Недавно я настроил среду разработки и снова начал использовать valgrind. На этот раз он не находит потерянную память! Даже если я выделю память, а затем прерву программу с помощью CTRL-C, я получу дамп ниже. Может кто-нибудь объяснить, что происходит?

Confused ....

==2489== HEAP SUMMARY:
==2489==     in use at exit: 314,145 bytes in 585 blocks
==2489==   total heap usage: 1,410 allocs, 825 frees, 2,025,829 bytes allocated
==2489== 
==2489== LEAK SUMMARY:
==2489==    definitely lost: 0 bytes in 0 blocks
==2489==    indirectly lost: 0 bytes in 0 blocks
==2489==      possibly lost: 0 bytes in 0 blocks
==2489==    still reachable: 314,145 bytes in 585 blocks
==2489==         suppressed: 0 bytes in 0 blocks
==2489== Reachable blocks (those to which a pointer was found) are not shown.
==2489== To see them, rerun with: --leak-check=full --show-reachable=yes
==2489== 
==2489== For counts of detected and suppressed errors, rerun with: -v
==2489== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 6 from 6)

1 Ответ

4 голосов
/ 27 января 2012

Если указатель на malloc память все еще есть, это не утечка.Он отображается как , все еще достижимый в сводке.

Память, которая не free ed, не обязательно просочилась, если она все еще жива, то есть где-то еще есть указательглобально, из стека или из регистров.)

...