是否有人知道CppUnit的扩展,可用于在逐个测试的基础上针对内存泄漏进行断言。
即CPPUNIT_ASSERT_NO_LEAKS()?
本质上,当测试的执行结果导致内存泄漏时,我希望能够通过特定的测试。
最佳答案
如果您在Linux上运行,则可以使用memcheck运行测试。
手册的Client Requests部分描述了几个有用的宏,其中的一个对测试很有用:
宏是在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。
关于c++ - 使用CppUnit进行内存泄漏检测,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1001448/