c语言 - 函数结束后如何"free"变量?



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

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

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

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

此外,如果要像strdup一样返回分配的内存,则函数的调用方必须释放内存。喜欢:

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

如果您正在考虑在归还后释放它,那是不可能的。一旦你从函数中return了一些东西,它就会自动终止。

在调用 someFunction 的代码中。

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

如果返回分配的内存,则调用方负责释放它。

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

好吧,你return它调用函数,然后只需在调用函数中free指针。

如果您的意思是调用函数中不需要返回值,并且由于其副作用而调用该函数,那么您可以编写

free( someFunction( p, q ) );

相关内容

  • 没有找到相关文章

最新更新