Si está ejecutando en Linux, puede ejecutar sus pruebas con memcheck.
La sección Client Requests del manual describe varias macros útiles, de los cuales uno se observa como siendo útiles para la prueba:
VALGRIND_COUNT_LEAKS
: llena los cuatro argumentos con el número de bytes de memoria encontrado por la anterior verificación de fugas para filtrar, dudoso, alcanzable y suprimido. De nuevo, es útil en el código de arnés de prueba, después de llamar al VALGRIND_DO_LEAK_CHECK
.
La macro se define en memcheck.h
(probable en /usr/include/valgrind
), y la secuencia que desea se parecerán
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.
Repitiendo que en cada ensayo sería un dolor, por lo que podría escribir macros de su propio o, mejor aún, un especializado TestRunner.
Esto no falla una prueba específica basada en fugas de memoria ... –
Gracias, debería haber estado más claro. ¡Revisado! –