讓我們考慮以下情形在單鏈表: -釋放內存forcelly
我一直在考慮的目標節點,這將被刪除。
讓我們假設以下數據,我將接收持有「3」的對象,這是我要刪除的對象;
1 - > 2 - > 3 - > 4 - > 5 - > 6
和類結構是: -
Class DataHolder
{
int data;
DataHolder nxtPrt;
}
Void Delete (DataHolder currentData)
{
currentData.data = currentData.nxtPrt.data; //Now 3 will be overwritten by 4
(x) currentData.nxtPrt = (y) currentData.nxtPrt.nxtPrt;
//Now the object which belongs to 4 (previously it was 3),
//is pointing to 5;
}
所以,現在的對象4的實際拷貝現在成爲無用;
所以,現在我只想刪除分配給4的原始副本的空間;
但是,現在我無法跟蹤,也因爲,我已經改變了目標指向5
所以現在,在這一點上我已經失去了實際的對象4.
我可以請知道,有沒有辦法強制要求對象釋放其佔用的內存,如使用dealloc在「C」中執行,或者我必須依靠GC來收集未使用的空間。
在此先感謝。
你永遠不應該做的幾件事。不要強制垃圾收集,不要編寫自己的LinkedList類,也不要使用鏈表。教育你自己,從你當地的圖書館查看關於.NET編程的介紹性書籍,以避免觸及每一個不好的習慣。 –
@ThomasAndreèLian:'IDisposable'對確定性地釋放文件句柄,套接字等無用資源非常有用。託管內存由垃圾收集器處理,與「IDisposable」無關。處理一些東西不會釋放任何託管內存。 –