我有一个函数,它需要一个指向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