C 中指向指针的自由指针

free pointer to pointer in C

我对 C 不如对 C++ 熟悉,但我发现自己需要调试 C应用程序甚至成功后,但我不确定我的修复是否 确实是对的。

这是一个代码:

FcValueList **value = NULL;
value = (FcValueList **) malloc (SIZEOF_VOID_P * nobjs);

// other code...

if (value)
free (value);

FcValueList是一个结构,SIZEOF_VOID_P是一个大小 空指针。 上面的代码不起作用,因为 value 是 "unable to read memory"

所以我应用了以下修复程序,并且代码适用于应用程序以 0 退出:

value = (FcValueList **) malloc (SIZEOF_VOID_P * nobjs);

// other code...

if (*value)
free (value);

我的修正正确吗?如果不是,那什么才是正确的?

不,您的修复不正确。您的原始代码很好,但不需要 if 语句。允许将 NULL 指针传递给 free()

如果没有更多解释,实际上不可能提供更多上下文 - 您的第一个代码示例很好,如图所示。