【发布时间】:2013-04-24 17:04:42
【问题描述】:
我有一个函数,其中有一个空闲的内存。
我想在调用此函数后断言该函数已释放给定的内存。
我无法更改此函数中的任何内容。
我需要它来进行 uni 测试。我想测试我的函数,我想检查我的函数在调用它后是否真的释放了内存
问题在代码中
void func(char *mem)
{
// Some where in the function there is a free of the memory
// The free could be into if condition so there is a risk to not be executed
}
int main()
{
char *mem = malloc(20);
func(mem);
// how to assert here that the memory is freed?
}
【问题讨论】:
-
你不需要。如果你
free()内存,它将被释放。 -
@H2CO3 仔细阅读问题。
-
@gbtimmon 我确实完整地阅读了这个问题。设计有缺陷,这是一个 XY 问题。解决方案不是“断言是否释放了内存”。
-
我不确定,但也许您要确定的是内存是否真的被释放,如果没有断言或错误输出。这可能已经在 free 内部实现了。你不需要检查它。如果你想这样做,这将变得混乱和复杂
-
@H2CO3 我同意你的看法。我们必须自己跟踪。
标签: c++ c memory-leaks free assert