Распределение полностью вне вашего контроля;бесплатное для вас также практически невозможно.Это должно быть добавлено в список известных, обнаруженных, записанных, но игнорируемых элементов («подавленный» - это жаргон).
Когда я запускаю программу под valgrind 3.7.0 на MacOS X 10.7.2, я получаюкраткое изложение, например:
==71989==
==71989== HEAP SUMMARY:
==71989== in use at exit: 6,191 bytes in 33 blocks
==71989== total heap usage: 33 allocs, 0 frees, 6,191 bytes allocated
==71989==
==71989== LEAK SUMMARY:
==71989== definitely lost: 0 bytes in 0 blocks
==71989== indirectly lost: 0 bytes in 0 blocks
==71989== possibly lost: 0 bytes in 0 blocks
==71989== still reachable: 6,191 bytes in 33 blocks
==71989== suppressed: 0 bytes in 0 blocks
==71989== Rerun with --leak-check=full to see details of leaked memory
==71989==
==71989== For counts of detected and suppressed errors, rerun with: -v
==71989== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 1 from 1)
Это из программы, которая не выполняет явное выделение памяти - printf()
может инициировать некоторое выделение, но большинство этих байтов выделяются в системных библиотеках.Вы явно получили более глубокое, чем обычно, значение, установленное для трассировки (--num-callers=N
).
Смотрите в руководстве, как правильно добавить запись подавления, но valgrind --help
предлагает:
--num-callers=<number> show <number> callers in stack traces [12]
--error-limit=no|yes stop showing new errors if too many? [yes]
--error-exitcode=<number> exit code to return if errors found [0=disable]
--show-below-main=no|yes continue stack traces below main() [no]
--suppressions=<filename> suppress errors described in <filename>
--gen-suppressions=no|yes|all print suppressions for errors? [no]
Итак, вы можете получить valgrind
, чтобы сгенерировать строку подавления для добавления в файл, который вы затем будете использовать в последующих запусках.
Extra options read from ~/.valgrindrc, $VALGRIND_OPTS, ./.valgrindrc