释放函数本地的指针并返回指针

时间:2016-10-09 05:02:42

标签: c pointers malloc local free

我有一个与此类似的C代码。如何释放指针并将其返回?如果我创建另一个本地指针变量并将p分配给该本地指针变量,它将显示一条警告,指出无法返回局部变量指针。 请注意,我有一个递归,所以我想释放函数本身的指针。任何解决方法。提前致谢。

char * ABCfunction(){
    char * p = malloc(10*sizeof(char));
    //do something with p
    ABCfunction();
    return p;
    //free(p); //Want to do both.
}  

更新:是的,我知道这没有意义,我们不能同时做到这两点。我要求另一种方法。问题是如果我不释放指针,它会为高输入值消耗大量内存。我想摆脱高内存使用率。

1 个答案:

答案 0 :(得分:0)

  

想要两者兼顾。

这不是一个好目标。

如果释放指针,则不应返回指针。否则,调用函数将获得一个悬空指针。

  

请注意,我有一个递归,所以我想释放函数本身的指针。

确保捕获返回的指针,使用它,然后释放它。

这是你的功能应该是什么样的:

char * ABCfunction()
{
   char * p = malloc(10*sizeof(char));
   //do something with p

   char* p1 = ABCfunction();
   // Use p1.
   // Then free p1
   free(p1);

   return p;
}