我想要做的是分配一个char** stringarr
。c:免费char *,不破坏字符**
在一些地方,stringarr[index]
,我想分配一个char*
。 所以我想在char **
的一些地方保存字符串(char*
)。 例如后的程序运行:
stringarr[0] = "Hello", stringarr[1] = "goodbye"
的问题是,我想释放char *
拿着琴弦,但是当我做当然stringarr[0]
不再将指向释放char*
。
我该如何解决这个问题?
澄清: 我想将字符串(char *)添加到字符串数组(char **)。然后我释放字符串,但不是字符串数组。我怎么能做到这一点,而不影响char **?
_请澄清您的具体问题或添加额外的细节,以确切地突出你所需要的。正如目前所写,很难确切地说出你在问什么。请参阅如何解答此问题的帮助页面._ –
[如何询问页面](http://stackoverflow.com/help/how-to-ask) – gavv
上述代码将'stringarr [0]'设置为指向到一个不能被释放的字符串文字。你可以做的最多的是将'stringarr [0]'设置为别的东西,比如'NULL'。相反,如果你做类似'char * foo = malloc(10); strcpy(foo,“fred”); stringarr [0] = foo;',然后你调用'free(foo)',它取决于你的代码以确保它不会访问'stringarr [0]'所指向的缓冲区。你是如何完成的,取决于你。确保您的代码在释放'foo'后重置'stringarr [0] = NULL;并始终检查'stringarr [0]'是否为NULL,是实现它的一种方法。 –