我不熟悉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);
我的修正是否正确?如果没有那么正确呢?
答案 0 :(得分:6)
不,你的修复不正确。您的原始代码很好,但不需要if
语句。允许将NULL
指针传递给free()
。
如果没有更多解释,实际上不可能提供更多上下文 - 您的第一个代码示例如图所示。