我们是否需要在wordexp失败时调用wordfree?在某些情况下调用wordfree似乎是段错误的(例如,当wordfree返回错误代码时,字符串是“foo'bar”)。 这个在手册页中并不清楚,我在一些错误情况下看到过使用过wordfree。
答案 0 :(得分:4)
根据GNU's manual example,只有在返回WRDE_NOSPACE
时才会出错:
switch (wordexp (program, &result, 0))
{
case 0: /* Successful. */
break;
case WRDE_NOSPACE:
/* If the error was WRDE_NOSPACE,
then perhaps part of the result was allocated. */
wordfree (&result);
default: /* Some other error. */
return -1;
}