我有一個函數,它需要一個指向char **的指針,並用字符串填充它(我猜想是一個字符串數組)。 * list_of_strings *在函數內部分配內存。釋放已分配給char指針(字符串)數組的內存。我是否必須釋放每個字符串或只是「主」指針?
char * *list_of_strings = NULL;
/* list_of_strings malloc'd inside function */
fill_strings_with_stuff(&list_of strings);
use_list_for_something(list_of_strings);
/* Now how do I free it all? */
如何在使用字符串後釋放內存?如果我打電話
free(list_of_strings);
不會只是釋放實際的指針,而不是每個字符串本身使用的內存?如何完全釋放內存
只是爲了清楚起見,功能看起來是這樣的:
fill_strings_with_stuff(char *** list)
{
*list = malloc(AMOUNT);
for (i = 0; i < SOMETHING; i++) {
*(list + i) = malloc(LINE_LEN);
*(list + i) = some_string_from_somewhere
}
/* ... */
}
你有內存泄漏:`*(list + i)= some_string_from_somewhere`覆蓋從malloc獲得的指針。 – sharptooth 2011-01-19 09:38:52