释放函数的局部指针和 return 指针
Free a pointer local to a function and return the pointer
我有一个与此类似的 C 代码。我怎样才能释放指针和 return 它?如果我创建另一个局部指针变量并将 p
分配给该局部指针变量,它会显示一个警告,即局部变量指针不能被 returned。 请注意,我有一个递归,所以我想释放函数本身中的指针。任何解决方法。提前致谢。
char * ABCfunction(){
char * p = malloc(10*sizeof(char));
//do something with p
ABCfunction();
return p;
//free(p); //Want to do both.
}
更新:是的,我知道这没有意义,我们不能两者兼顾。我要求另一种方法。问题是如果我不释放指针,它会为高输入值消耗大量内存。我想摆脱高内存使用率。
Want to do both.
这不是一个好目标。
如果释放指针,则不应 return 指针。否则,调用函数将得到一个悬空指针。
Note that I have a recursion so I want to free up the pointer in the function itself.
确保捕获 returned 指针,使用它,然后释放它。
您的函数应如下所示:
char * ABCfunction()
{
char * p = malloc(10*sizeof(char));
//do something with p
char* p1 = ABCfunction();
// Use p1.
// Then free p1
free(p1);
return p;
}
我有一个与此类似的 C 代码。我怎样才能释放指针和 return 它?如果我创建另一个局部指针变量并将 p
分配给该局部指针变量,它会显示一个警告,即局部变量指针不能被 returned。 请注意,我有一个递归,所以我想释放函数本身中的指针。任何解决方法。提前致谢。
char * ABCfunction(){
char * p = malloc(10*sizeof(char));
//do something with p
ABCfunction();
return p;
//free(p); //Want to do both.
}
更新:是的,我知道这没有意义,我们不能两者兼顾。我要求另一种方法。问题是如果我不释放指针,它会为高输入值消耗大量内存。我想摆脱高内存使用率。
Want to do both.
这不是一个好目标。
如果释放指针,则不应 return 指针。否则,调用函数将得到一个悬空指针。
Note that I have a recursion so I want to free up the pointer in the function itself.
确保捕获 returned 指针,使用它,然后释放它。
您的函数应如下所示:
char * ABCfunction()
{
char * p = malloc(10*sizeof(char));
//do something with p
char* p1 = ABCfunction();
// Use p1.
// Then free p1
free(p1);
return p;
}