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);
另一种选择是使用单个调用 toReturn 分配 toReturn malloc
,在这种情况下,只需调用 to 即可释放它free
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句