老问题,但我仍然有一些想法。
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() 而没有释放它的返回值,那么我会以某种方式发生内存泄漏吗?