看板 C_Sharp 關於我們 聯絡資訊
※ 引述《fillmore (.......................)》之銘言: : class Form1 : { : Form2 F2; : public Form1() : { : F2 = new Form2(this); : } : } : class Form2 : { : Form1 F1; : public Form2(Form1 ref) : { : F1 = ref; : } : } : 請問Form1物件的F2 = null的時候 : 1.確實在記憶體中有清乾淨嗎?? (因為F2物件裡面有Form1的參考,所以不知道會怎樣) : 2.如果沒有清乾淨那該如何清理呢? : 3.或是兩個不同的Form互有對方的參考又該如何清理? 1. 假如你已new Form1,它則產生Form1的記憶體(以下簡稱MM)使用,它放Form2, 而Form2本身只是具有一個Form1的指向,並沒有實際的MM配置。 當F2=null時,GC會註記Form2物件的ref count - 1,等ref-count為0時 可能立即或等一會兒再回收MM資料 2.要確保會立即清乾淨,就是實作Dispose()這介面方法 用F2.Dispose() 來代替F2=null。 3.不管怎樣的參考,你只要回歸Form1/Form2各自的Ref-Count現值 就可知道它們的回收狀況。 -- 貫徹分享精神 我為人人,人人為我 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.78.132.15