当电话看起来像free()
时,我strdup
的{{1}}怎么办?
更多背景信息:
*(result + idx++) = strdup(token);
答案 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>