0
我有以下代碼:使用new/malloc會避開本地指針的警告嗎?
int* CoverFunction(){
int* result =new int[3];
result[0]=1;
result[1]=2;
result[2]=3;
return result;
}
這給了我以下警告:
警告:局部變量 '結果' 的地址返回[-Wreturn-本地地址]
但是不使用新的關鍵字意味着這應該不成問題?在這個函數結束後,我是否有可能刪除我的數據,或者它會安全地在堆棧中存活?如果它能夠安全地存放在堆棧上,我該如何擺脫這個警告?
該代碼不應該產生警告。這是你的實際代碼還是你從內存中打字? – molbdnilo
這就是實際的代碼。但它確實產生了這個警告(注意我使用catkin_make的奇怪版本,而不是普通的編譯器)。 – Thijser
這解決了錯誤(我不知道爲什麼你的編譯器在抱怨),但是它使得調用者有責任在使用後刪除數組。節省自己調試內存泄漏的麻煩,並使用'std :: vector'。或者可能是'std :: array'。 –