如何在函数结束后"释放"变量?

Jax*_*x-p 9 c malloc free pointers

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

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

Ash*_*uja 6

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

char* result = malloc(la + 2 * sizeof(char));
...
free (result);
Run Code Online (Sandbox Code Playgroud)

此外,如果你正在返回分配的内存,就像你一样strdup,你的函数的调用者必须释放内存.喜欢:

result = somefunction ();
...
free (result);
Run Code Online (Sandbox Code Playgroud)

如果你想在退回之后释放它,那是不可能的.一旦你return从函数中获得了某些东西,它就会自动终止.

  • 这个代码片段看起来很粗略,我希望没有误解:你应该在返回它之前不要"释放"内存! (3认同)

Kos*_*nae 6

在调用的代码中someFunction.

您还必须在完成使用返回值后,在调用者必须调用的文档中明确(您有,对吗?!)free.