這是作業分配的一部分。C返回字符[]警告「返回本地變量的地址」
我想在我的方法getLine中讀取並返回一行文件。
char *getLine(FILE *input) {
char line[30];
if(fgets(line, sizeof(line), input)!=NULL)
{
return line;
}else{
return NULL;
}
}
這似乎從有關指針我已經教了什麼工作,但是我無法刪除警告消息warning: function returns address of local variable [enabled by default]
。此警告指的是線路return line;
。我的任務要求編譯時我沒有警告或錯誤。我沒有看到我做錯了什麼。
我發現的大部分幫助爲文本行提供了malloc-ing空間,但是我們還沒有在課堂上介紹過,即使我已經在另一課中做了一些。這真的是最好的方法嗎?如果是這樣,我可以在程序的任何地方釋放嗎?
函數返回時局部變量不再存在,則返回一個懸掛指針。讓我找到一個騙局。 – 2013-02-14 10:21:12
如果要在堆上分配內存,請使用'malloc'。這個問題在這裏已經被無數次地提出。 – KBart 2013-02-14 10:22:29
這是很常見的錯誤,所以你肯定會發現幾十篇有關遇到這個問題的文章:)其中一個原因是,大多數編譯器甚至不會警告你你在做什麼:http:// ideone。 com/S5Se71 – LihO 2013-02-14 10:32:47