Я разработал реализацию списков (очередей) FIFO в файлах fifo.h
и fifo.c
на чистом языке C и написал тестовую программу testfifo.c
, который я компилирую в ./bin/testfifo
. Структура узла определена в list.h
.
Я запускаю свою программу через Valgrind на OS X 10.6 следующим образом
valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./bin/testfifo
и получите следующий вывод
==54688== Memcheck, a memory error detector
==54688== Copyright (C) 2002-2011, and GNU GPL'd, by Julian Seward et al.
==54688== Using Valgrind-3.7.0 and LibVEX; rerun with -h for copyright info
==54688== Command: bin/testfifo
==54688==
--54688-- bin/testfifo:
--54688-- dSYM directory is missing; consider using --dsymutil=yes
==54688==
==54688== HEAP SUMMARY:
==54688== in use at exit: 88 bytes in 1 blocks
==54688== total heap usage: 11 allocs, 10 frees, 248 bytes allocated
==54688==
==54688== LEAK SUMMARY:
==54688== definitely lost: 0 bytes in 0 blocks
==54688== indirectly lost: 0 bytes in 0 blocks
==54688== possibly lost: 0 bytes in 0 blocks
==54688== still reachable: 0 bytes in 0 blocks
==54688== suppressed: 88 bytes in 1 blocks
==54688==
==54688== For counts of detected and suppressed errors, rerun with: -v
==54688== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Согласно сводке утечек, утечек нет, но мне все еще интересно, что такое "подавленные" утечки. Кроме того, количество alloc и free не совпадают, и поэтому я не уверен, есть ли утечки или нет.
---- EDIT ----
Запуск
valgrind --tool=memcheck --leak-check=full --show-reachable=yes -v ./bin/testfifo
в OS X 10.6 выдает довольно длинный и запутанный вывод, но я запустил
valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./bin/testfifo
на машине с Linux и получил этот вывод:
==32688== Memcheck, a memory error detector
==32688== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al.
==32688== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info
==32688== Command: bin/testfifo
==32688==
==32688==
==32688== HEAP SUMMARY:
==32688== in use at exit: 0 bytes in 0 blocks
==32688== total heap usage: 10 allocs, 10 frees, 160 bytes allocated
==32688==
==32688== All heap blocks were freed -- no leaks are possible
==32688==
==32688== For counts of detected and suppressed errors, rerun with: -v
==32688== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 4 from 4)
alloc и free теперь совпадают с , поэтому дополнительное размещение в OS X, по-видимому, связано с некоторой системной библиотекой, как было предложено.
Я выполнил ту же самую команду с опцией -v
, чтобы выявить 4 подавленных ошибки, но у меня нет какой-либо легко понятной новой информации.