【发布时间】:2009-08-20 12:16:35
【问题描述】:
我知道我们应该释放任何用 malloc 分配的变量,但是如果我在函数中返回它呢?像这样的:
char *somefunction(int somearg){
char *str;
str=(char *)malloc(sizeof(char *));
//some code
return str;
}
我应该释放 str 吗?我怎么能这样做?
【问题讨论】:
-
malloc()的参数几乎肯定是错误的 - 您分配了足够的内存来存储char *,但分配给指向char的指针(并且无需强制转换malloc在 C 中的返回值,或者)。str = malloc(N * sizeof *str);是一个更好的写法。 -
正如 CAF 所说,你永远不应该转换 malloc() 的返回值。见stackoverflow.com/questions/1565496/…等人