是否有人知道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/

10-10 14:56