我想为一个销毁数据结构的函数编写单元测试,以查看所涉及的内存区域是否已被释放。如果需要,我可以接受依赖于操作系统的解决方案,我的主要平台是……
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。
在这个特定的情况下,涉及到树形结构,对于树中的每个数据块,该结构负责调用删除存储在树中的数据的例程,这可能是一些其他任意的东西...
free
函数是否被调用。如果问题是“我的free
函数工作正常吗?”那么这里就没有问题了。是的,你的free
函数工作正常。编译器供应商负责测试它,你试图测试是毫无意义的。 - David Heffernanmmap()
/munmap()
并自己分配切片。然而,通常情况下,不将其返回给操作系统也不是什么大问题。如果页面未被使用且存在内存需求,则它将从RAM中交换出去。 - FatalError