Piszę rozszerzenie python, który wydaje się być wyciekającej pamięci. Próbuję dowiedzieć się, jaki jest problem z użyciem valgrind.Wycieki pamięci Pythona?
Jednak wygląda na to, że pyton sam przecieka pamięć zgodnie z wartością valgrind. Stosując następujący prosty skrypt:
hello.py
print "Hello World!"
i robi
> valgrind --tool=memcheck python ./hello.py
(...)
==7937== ERROR SUMMARY: 580 errors from 34 contexts (suppressed: 21 from 1)
==7937== malloc/free: in use at exit: 721,878 bytes in 190 blocks.
==7937== malloc/free: 2,436 allocs, 2,246 frees, 1,863,631 bytes allocated.
==7937== For counts of detected errors, rerun with: -v
==7937== Use --track-origins=yes to see where uninitialised values come from
==7937== searching for pointers to 190 not-freed blocks.
==7937== checked 965,952 bytes.
==7937==
==7937== LEAK SUMMARY:
==7937== definitely lost: 0 bytes in 0 blocks.
==7937== possibly lost: 4,612 bytes in 13 blocks.
==7937== still reachable: 717,266 bytes in 177 blocks.
==7937== suppressed: 0 bytes in 0 blocks.
==7937== Rerun with --leak-check=full to see details of leaked memory.
Czy ktoś ma wyjaśnienia dla tego zachowania strage? Czy interpreter python naprawdę przecieka pamięć?
Jakie narzędzie są używane przez programistów Pythona do debugowania wycieków pamięci?