c:释放 char* 而不破坏 char**

标签 c arrays malloc

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

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

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

问题是我想释放保存字符串的 char * ,但是当我这样做时,stringarr[0] 不再指向释放的 字符*

我该如何解决这个问题?

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

最佳答案

处理这个问题的通常方法是将NULL分配给释放的指针:

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

您仍然可以访问stringarr中的其他字符串(但不能访问stringarr[3]),并且您可以通过检查特定位置是否为NULL

关于c:释放 char* 而不破坏 char**,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39511761/

相关文章:

arrays - 如果可以交换两个大小相等的子数组,则对数组进行排序的交换操作的最小数量

c - 如何在 C 语言中为特定的结构类型正确使用 free

c - 在linux上的c中分配可执行ram

c - 如何在数组中存储 1 000 000 000 个项目?

c - 从 C 中的 MPEG-TS 中的 H264 中提取 I 帧

ruby - 查找数组中与前一个不同的元素

javascript - 如何解决 "has no method ' push'”错误?

c - 程序多次接受最后一行

c - "static const"vs "#define"vs "enum"

c - 为什么扩展 TCL 示例不起作用?