Re: [問題] 請問函式的引數若為另一函式,是否就不 …

看板C_and_CPP (C/C++)作者 (遇到神經病)時間16年前 (2009/05/28 08:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/4 (看更多)
推文中大大提到的autoptr應該無法解決問題 因為autoptr只會呼叫delete而不會呼叫delete[] 如果我是原po的話,回傳值我會用vector<vector<double> >取代double** 好處是離開Mul函式後就會自動回收,壞處是要付出constructor跟destructor的呼叫 ※ 引述《Carbontube (碳管)》之銘言: : 舉例來說吧, A與B皆為matrix,今做下面的計算: : A*(B**t) (A矩陣與B矩陣的轉置做相乘 ) : 假設AB皆為方陣 寫成程式可為 Mul( n, A,transpose(n,B) ) : double **transpose(int n,double **M) : { : double **Mt; : /*allocate Mt memory*/ : /*compute Mt = M**t */ : return Mt; : }/*transpose*/ : double **Mul(int n, double **M1, double **M2) : { : double **C; : /*allocate C memory*/ : /*compute C = M1*M2 */ : return C; : }/*Mul*/ : 所以在原本的程式 Mul( n, A,transpose(n,B) )中 : 其實transpose(n,B) 就是Mt : 我想問的是,那這樣Mt被宣告後就沒有機會free memory, : 那請問這樣complier會自動free嗎? : 若不會,那有什麼方法以手動方式適放 Mt所佔住的記譯體呢? : (當然是假設不在Mul內部適放M2的記憶體) : 謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.71.223.127 ※ 編輯: dcleft 來自: 219.71.223.127 (05/28 08:30)
文章代碼(AID): #1A7Tfbh1 (C_and_CPP)
文章代碼(AID): #1A7Tfbh1 (C_and_CPP)