0

我有一个没有内存的功能。

我想在调用此函数后断言该函数已释放给定的内存。

而且我无法更改此功能中的任何内容。

我需要它来进行单次测试。我想测试我的函数,我想检查我的函数在调用它后是否真的释放了内存

问题在代码中

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?
}
4

1 回答 1

5

简短的回答:没有办法做到这一点。

确保释放的内存不会被意外重用或识别某些指针已释放的常用方法是在释放后立即将其设置为 NULL。为此,在您的示例中,您需要对func(). 如果您无法对其进行任何更改,func()则无法确定传递给它的指针是否已释放或仍然有效。

此外,如果您 func() 将为某些调用而不是为其他调用释放内存,那么这是一个糟糕的设计。必须有一种更好、更透明的方式来管理动态分配的内存。

于 2013-04-24T17:11:38.803 回答