我正在使用 C 语言在 Unix/Linux 中工作。我对内存分配的工作原理有基本的了解,足以知道如果我 malloc() 然后 free(),我不太可能真正释放整个页面。因此,如果我在 free() 之前和之后使用 getrusage(),我不太可能会看到任何区别。
我想为一个破坏数据结构的函数编写一个单元测试,以查看所涉及的内存区域实际上已被释放。我对依赖操作系统的解决方案持开放态度,在这种情况下,我的主要平台是
Linux beast 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
以 OS X 和FreeBSD作为辅助。如果有一种解决方案可以使检查 free() 相对容易,我也愿意更换 malloc()。
需要明确的是,我正在测试一个删除大型数据结构的例程,并且我想确保所有分配的区域都被实际释放,本质上是一个单元测试,特定单元没有基本的内存泄漏. 我将假设 free() 完成了它的工作,我只是确保我的代码实际上在它负责的所有分配区域上调用 free。
在这种特殊情况下,它是一个树结构,对于树中的每条数据,该结构负责调用删除存储在树中的数据的例程,这可能是其他一些任意的事情......