【发布时间】:2026-01-24 03:35:01
【问题描述】:
就在几天前,我开始研究一个名为 check 的单元测试框架, 我打算在Linux下对c代码进行测试。
现在检查一下,一些设计良好的代码和一些测试代码可以帮助我验证 基本功能是正确的, 我的意思是很容易只看变量和响应 判断一个函数是否正确。
但是假设我想测试一个动态内存结构,其中包含大量的 malloc 和 free, 事实证明,我可以输入数据并再次取出正确的数据。 但这并不能证明我在这个过程中没有破坏一些记忆, 假设我忘记释放一半的内存并丢失了指针(经典的 memleak)。 该代码可能会通过大部分单元测试。
那么现在的问题是: 使用 Valgrind 运行整个单元测试代码并让他运行是个好主意吗? 检测任何 malloc/free 问题? (或者也许编译成 Electric Fence 之类的东西?)
感觉是个好主意,但我不确定自己在这里做什么.....
谢谢 约翰
更新:感谢 Douglas 和 Jonathan, 看来这是个好主意,我应该继续这样做:-)
更新: Valgrind 是一个有趣的工具,但是我发现的第一个 memleaks 这样做 在测试框架中,而不是我自己的代码(虽然很有趣)。 因此,对其余部分的提示是在颠倒您自己的代码之前验证您正在使用的单元测试框架没有泄漏。 我的案例只需要一个空的测试用例, 从那时起,只有单元测试框架正在运行。
【问题讨论】:
标签: c linux unit-testing valgrind check-framework