我想要做的是分配一个char** stringarr
。
在某些地方stringarr[index]
,我想指定一个char*
。
所以我想在char*
的某些地方保存字符串(char **
)。
例如,程序运行后:
stringarr[0] = "Hello", stringarr[1] = "goodbye"
问题在于我想要释放持有字符串的char *
,但当我这样做时,stringarr[0]
不再指向已释放的char*
。
我该如何解决这个问题?
澄清: 我想将字符串(char *)添加到字符串数组(char **)。然后我释放字符串,但不释放字符串数组。我怎么能这样做,而不影响char **?
答案 0 :(得分:1)
处理此问题的常用方法是将NULL
分配给释放的指针:
free(stringarr[3]);
stringarr[3] = NULL;
您仍然可以访问stringarr
中的其他字符串(但不是stringarr[3]
),您可以通过检查特定位置NULL
来查看该字符是否空缺。