虽然这个问题已经过时,但我还是有一些想法。
char * getarrmal(void)
{
char *str;
str = (char *)malloc(10);
str[0] = 'a';
str[1] = 'b';
str[2] = 'c';
str[3] = '\0';
return str;
}
char * getarrdef(void)
{
char *str = "hello";
return str;
}
char * getarrfix(void)
{
char str[10] = "world";
return str;
}
有三个函数。 前两个函数将返回一个字符串地址,该字符串存储在堆上,因此您可以在例如main()函数中继续使用它。
在最后一个函数中,str是一个局部变量,返回的str不能被使用。
我的问题是,在调用前两个函数的函数中返回时,我是否应该手动释放它们? 对于malloc情况来说,很容易相信这是真的,但我不确定对于char * str =“hello”也是如此。
如果我使用getarrdef()并且不释放其返回值,那么会出现内存泄漏吗?
malloc
(或其相关函数)来进行分配,那么你就不需要调用free
。很简单。 - Ed S.