在C中指针的自由指针

cod*_*ddy 0 c pointers

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

这是一个代码:

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

// other code...

if (value)
free (value);
Run Code Online (Sandbox Code Playgroud)

所述FcValueList是一个结构和SIZEOF_VOID_P是尺寸void指针的.上面的代码不起作用,因为 "无法读取内存"

所以我应用了以下修复程序,代码使用app退出0:

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

// other code...

if (*value)
free (value);
Run Code Online (Sandbox Code Playgroud)

我的修正是否正确?如果不是什么会是正确的呢?

Car*_*rum 6

不,你的修复不正确.您的原始代码很好,但不需要if声明.允许传递NULL指针free().

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