c:免费char *而不破坏char **

时间:2016-09-15 13:02:47

标签: c arrays malloc

我想要做的是分配一个char** stringarr

在某些地方stringarr[index],我想指定一个char*。 所以我想在char*的某些地方保存字符串(char **)。 例如,程序运行后:

stringarr[0] = "Hello", stringarr[1] = "goodbye"

问题在于我想要释放持有字符串的char *,但当我这样做时,stringarr[0]不再指向已释放的char*

我该如何解决这个问题?

澄清: 我想将字符串(char *)添加到字符串数组(char **)。然后我释放字符串,但不释放字符串数组。我怎么能这样做,而不影响char **?

1 个答案:

答案 0 :(得分:1)

处理此问题的常用方法是将NULL分配给释放的指针:

free(stringarr[3]);
stringarr[3] = NULL; 

您仍然可以访问stringarr中的其他字符串(但不是stringarr[3]),您可以通过检查特定位置NULL来查看该字符是否空缺。