[問題] 請問函式的引數若為另一函式,是否就不會適放記億體?

看板C_and_CPP (C/C++)作者 (碳管)時間16年前 (2009/05/28 04:12), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
舉例來說吧, 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: 218.167.74.111

05/28 05:30, , 1F
autoptr可以解決這種問題嗎...?
05/28 05:30, 1F

05/28 09:01, , 2F
不行
05/28 09:01, 2F
文章代碼(AID): #1A7Px8rh (C_and_CPP)
文章代碼(AID): #1A7Px8rh (C_and_CPP)