於是,我問這個問題的一個基本的文本輸入功能的我在C++的書看上下文:爲什麼指針的分配內存會在函數後面存在,但不是數組?
char *getString()
{
char temp[80];
cin >> temp;
char * pn = new char[strlen(temp + 1)];
strcpy(pn, temp);
return pn;
}
所以臨時宣佈的80個字符數組,自動變量,其內存將被釋放,一旦getString()
回報。有人建議,如果由於某種原因返回temp
,則在該函數之外的使用將不可靠,因爲該函數完成後釋放內存。但既然我也在同一個上下文中聲明pn
,它的內存怎麼不會被丟棄呢?
它沒有核心轉儲執行嗎?你認爲它應該是strlen(temp)+1而不是strlen(temp + 1)? – KedarX 2010-08-11 06:08:19