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()
。
如果没有更多解释,实际上不可能提供更多上下文 - 您的第一个代码示例很好,如图所示。
我对 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()
。
如果没有更多解释,实际上不可能提供更多上下文 - 您的第一个代码示例很好,如图所示。