gpt4 book ai didi

c - 在 c 中使用 malloc 时的自由变量

转载 作者:行者123 更新时间:2023-12-05 09:05:43 24 4
gpt4 key购买 nike

char **loadValues()
{
char **toReturn;
int i;
toReturn = malloc(5 * sizeof(char *));
for (i = 0; i < 5; i++)
{
toReturn[i] = malloc(25); //Change the size as per your need
strncpy(toReturn[i], "string", i + 1); //Something to copy
}
return toReturn;
}

我复制了上面的部分代码。其中,“toReturn”变量是使用malloc 初始化的。难道我们不必“释放”这个“toReturn”变量吗?

我们在C中返回这些变量的时候不是必须释放它们吗?我仍然找不到明确的答案,也找不到返回时释放它的方法。谁能给我解释一下?

最佳答案

我假设您的问题是:调用 loadValues 并接收它返回的指针的函数如何释放加载的值。

如果我们将 loadValues 保持原样,最好的解决方案是创建另一个名为 freeValues 的函数,并在我们处理完值后调用它:

void freeValues(char **values)
{
for (i = 0; i < 5; i++)
{
free(values[i]);
}
free(values);
}

然后你可以在你的主程序中做这样的事情:

char **values = loadValues();
// ... use values for something
freeValues(values);

另一种选择是使用对 malloc 的单个调用来分配 toReturn,在这种情况下,只需调用 free 即可释放它。

关于c - 在 c 中使用 malloc 时的自由变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66835565/

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