Jeśli używasz systemu Linux, możesz uruchomić testy pod numerem memcheck.
Sekcja Client Requests podręcznika opisuje szereg przydatnych makra, z których jeden jest oznaczonych jako użyteczne dla badania:
VALGRIND_COUNT_LEAKS
: wypełnia cztery argumenty z liczbą bajtów pamięci, znaleziona przez poprzedni kontrola szczelności wyciekła, wątpliwa, osiągalna i tłumiona. Ponownie przydatne w kodzie paskowym testowym, po wywołaniu VALGRIND_DO_LEAK_CHECK
.
Makro jest zdefiniowana w memcheck.h
(prawdopodobnie w /usr/include/valgrind
), a sekwencja chcesz będzie przypominać
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.
Powtarzanie, że dla każdego testu byłby ból, więc można napisać makra własnego lub, jeszcze lepiej, wyspecjalizowany TestRunner.
To nie zawiedzie konkretnego testu opartego na wyciekach pamięci ... –
Dzięki, powinienem był jaśniejsze. Ulepszony! –