使用CuTest中的嵌套套件避免内存泄漏

时间:2015-02-15 19:26:19

标签: c unit-testing

我最近使用Valgrind使用CuTest库编写的单元测试来分析我的C项目。事实证明,我的所有CuSuiteCuTest都泄露了。我正在使用主套件设置,其中许多较小的套件被添加到一个大套件中,然后我运行。

首先,我尝试在主套件上使用CuSuiteDelete,但所有其他套件仍然泄露。在我的下一次尝试中,我首先删除了所有其他套件,然后是主套件。这导致了段错误,因为删除套件也会释放其中的所有测试。由于将套件添加到另一套件只需复制所有CuTest指针,第二次调用CuSuiteDelete将尝试释放已释放的CuTest

还有另一种方法可以做到这一点,避免内存泄漏和段错误吗?如果没有,这是CuTest中的一个错误。虽然单元测试通常是退出前唯一由进程运行的,但仍然没有文档记录。

以下是我提出的一些解决方案:

  1. 为每个CuTest添加引用计数。 CuSuiteAddSuite将增加此值,CuTestDelete将减少它,仅当refcount达到0时才删除测试。
  2. CuSuite添加套件的每个套件中添加CuSuiteAddSuite数组。这可能需要为套件引用refcount。

0 个答案:

没有答案