Если вы работаете в Linux, вы можете запустить свои тесты с помощью memcheck .
В разделе Client Requests руководства описано несколько полезных макросов, один из которых отмечен как полезный для тестирования:
VALGRIND_COUNT_LEAKS
: заполняет четыре аргумента количеством байтов памяти, обнаруженных предыдущей проверкой на утечку как утечка, сомнительная, достижимая и подавленная. Опять же, полезно в тестовом коде, после вызова VALGRIND_DO_LEAK_CHECK
.
Макрос определен в memcheck.h
(вероятно, в /usr/include/valgrind
), и требуемая последовательность будет напоминать
unsigned long base_definite, base_dubious, base_reachable, base_suppressed;
VALGRIND_DO_LEAK_CHECK;
VALGRIND_COUNT_LEAKS(base_definite, base_dubious, base_reachable, base_suppressed);
// maybe assert that they're zero!
// call test
unsigned long leaked, dubious, reachable, suppressed;
VALGRIND_DO_LEAK_CHECK;
VALGRIND_COUNT_LEAKS(leaked, dubious, reachable, suppressed);
CPPUNIT_ASSERT_EQUAL(base_leaked, leaked);
// etc.
Повторять это для каждого теста будет непросто, поэтому вы можете написать собственные макросы или, что еще лучше, специализированный TestRunner .