編輯:我改變了這個例子,試圖澄清我在做什麼。如何刪除作爲函數調用參數傳遞的指針C++
我有一個遞歸函數,它的指針數組作爲參數,創建一個指針到一個較小的陣列,並調用自身,傳遞較小數組作爲參數
int ListOfNumbers::recursiveQuickselect(int *array, int arrayLen){
if(arrayLen > 10){
int *tempArray;
tempArray = new int[some value];
...edit tempArray....
return recursiveQuickselect(tempArray, tempArrayLen);
}
else{
//base case:
sort this small array and return an element from it
}
當我運行的valgrind我被告知在函數recursiveQuickselect中丟失了1個塊。
我在哪裏刪除此代碼中的tempArray?
如果我的電話,然後我傳遞什麼到函數之前刪除
我顯然不能return語句後刪除。
注:我不能使用矢量,這是一個不允許他們的學校作業。
使用'std :: vector'。 – milleniumbug
這個帶有額外'median'變量的想法實際上是正確的做法......如果你絕對必須使用'new []'和'delete []',那麼就會爲你自己創造這些問題。 – aschepler
對於你描述的用例,tempArray不一定是一個指針。只需通過getMedian將ref傳遞給它即可。這將被評估,結果收集,原始變量將超出範圍。不需要堆分配。 – dwerner