Re: [問題] 請問函式的引數若為另一函式,是否就不 …
推文中大大提到的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)
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章