舊的問題,但我仍然有一些想法。C中的數組及其指針
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'。簡單。 – 2013-04-24 03:44:09