如何免费"函数结束后变量?

时间:2016-03-01 08:28:42

标签: c pointers malloc free

在C(通过malloc)执行函数后释放已分配内存的正确方法是什么?我需要分配内存,以某种方式使用它并将其返回,而不是我必须释放它。

char* someFunction(char* a, char* b) {
   char* result = (char*)malloc(la + 2 * sizeof(char));
   ...
   return result;
}

5 个答案:

答案 0 :(得分:6)

在调用someFunction

的代码中

你还必须在文档中明确说明(你有,那么?!),调用者必须在完成使用返回值后调用free

答案 1 :(得分:5)

使用free。在您的情况下,它将是:

char* result = malloc(la + 2 * sizeof(char));
...
free (result);

此外,如果您正在返回分配的内存,例如strdup,则函数的调用者必须释放内存。像:

result = somefunction ();
...
free (result);

如果您想在退回之后将其释放,那是不可能的。从函数中return后,它会自动终止。

答案 2 :(得分:3)

如果您返回已分配的内存,则调用者有责任将其释放。

char *res;
res = someFunction("something 1", "something 2");
free(res);

答案 3 :(得分:3)

你好return来调用函数,然后调用函数只需要free指针。

答案 4 :(得分:3)

如果你的意思是在调用函数中不需要返回的值,并且由于它的副作用而调用了函数,那么你可以写

free( someFunction( p, q ) );