我想要做的是分配一個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,是實現它的一種方法。 –