在C中指针的自由指针

时间:2015-02-16 22:07:08

标签: c pointers

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

这是一段代码:

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

// other code...

if (value)
free (value);

FcValueList 是一种结构, SIZEOF_VOID_P 是一个大小 无效指针。 上述代码不起作用,因为是"无法读取内存"

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

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

// other code...

if (*value)
free (value);

我的修正是否正确?如果没有那么正确呢?

1 个答案:

答案 0 :(得分:6)

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

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