gpt4 book ai didi

c - 释放已分配给 char 指针(字符串)数组的内存。我必须释放每个字符串还是只释放 "main"指针?

转载 作者:IT王子 更新时间:2023-10-28 23:36:39 30 4
gpt4 key购买 nike

我有一个函数,它接受一个指向 char ** 的指针并用字符串填充它(我猜是一个字符串数组)。 *list_of_strings* 在函数内部分配内存。

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
}

/* ... */

}

最佳答案

won't that just free the actual pointers and not the memory each string itself was using?

是的,确实。

How do I completely free the memory

通过遍历数组并逐个释放每个字符串释放数组本身。例如

for (i = 0; i < SOMETHING; i++) {
free(list[i]);
}
free(list);

关于c - 释放已分配给 char 指针(字符串)数组的内存。我必须释放每个字符串还是只释放 "main"指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4733649/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com