10月 05, 2010

懸置指標(dangling pointer) 與 懸置物件(dangling object)

[Dangling Pointer]
空間 free 掉,我還在用
函式呼叫結束,空間還回去了

解法 tombstone , locks-and-keys
[Dangling Reference]

[Dangling object]
heap dynamic variable 才會發生
可用 garbage collection 去解(投影片)
(1)參考計數法(reference-counting)
配置記憶體時,為所配置的記憶體額外提供一個計數器,用來紀錄
參考到此記憶體的指標變數,每增加一個指標參考此位址時,則計
數器加一,當指標變數不再指向此位址時,則計數器減一。
當計數器為零時,系統會收回此記憶體。

實做簡單,需要參考計數欄位

(2)標記追蹤法(mark tracing)
目前最廣被採用的演算法
在記憶體不足時執行,會掃描整個記憶體兩次,
第一次掃描時會判斷記憶體中的每一個物件是否仍在使用
如果仍在使用則做一個標記,否則就不做標記
第二次掃描清除沒有做標記的物件

沒有留言:

張貼留言