我怎么能在strdup之后释放()?

时间:2016-05-02 23:57:55

标签: c

当电话看起来像free()时,我strdup的{​​{1}}怎么办?

更多背景信息:

*(result + idx++) = strdup(token);

2 个答案:

答案 0 :(得分:2)

*(result + idx) = 0;行可以告诉序列的结束位置。 只需free()完成使用后分配的所有元素。 完成使用后,存储自身的数组也应为free() d。

char ** ret = char **str_split(/* some arguments */);
size_t idx;

/* deal with the result */

for (idx = 0; *(ret + idx) != NULL; idx++) {
    free(*(ret + idx));
}
free(ret);

答案 1 :(得分:1)

使用result完成后,调用此函数的代码必须free result中的每个指针,然后free才会产生结果。< / p>