函数结束后如何"free"变量?
How to "free" variable after end of the function?
在 C 中执行函数后释放分配内存的正确方法是什么(通过 malloc)?我需要分配内存,以某种方式使用它,然后 return 返回,而不是释放它。
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
某些东西,它就会自动终止。
如果您 return 分配了内存,那么调用者有责任释放它。
char *res;
res = someFunction("something 1", "something 2");
free(res);
在调用 someFunction
的代码中。
您还必须在文档中明确说明(您有,对吧?!),调用者 必须在使用完return 值。
好吧,你 return
它到调用函数,然后只是 free
调用函数中的指针。
如果你的意思是调用函数中不需要返回值,并且由于其副作用而调用该函数,那么你可以只写
free( someFunction( p, q ) );
在 C 中执行函数后释放分配内存的正确方法是什么(通过 malloc)?我需要分配内存,以某种方式使用它,然后 return 返回,而不是释放它。
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
某些东西,它就会自动终止。
如果您 return 分配了内存,那么调用者有责任释放它。
char *res;
res = someFunction("something 1", "something 2");
free(res);
在调用 someFunction
的代码中。
您还必须在文档中明确说明(您有,对吧?!),调用者 必须在使用完return 值。
好吧,你 return
它到调用函数,然后只是 free
调用函数中的指针。
如果你的意思是调用函数中不需要返回值,并且由于其副作用而调用该函数,那么你可以只写
free( someFunction( p, q ) );