看見網上很多關于單例模式的討論, 最爭議的是該單例模式的銷毀問題。
看了很多,這個是準確的,如果沒有隱式呼叫函式或者顯式呼叫,系統不會執行該物件的解構式,但系統確實會把該行程所有的資源回收。
最后我的觀點
1 如果你不需要在該靜態物件解構式執行一些必要的操作,我感覺沒必要多余的動作,靜態物件最終都是伴隨著程式生命周期的,程式都要結束了,除了業務處理邏輯,我們還需要執行什么的動作?
希望哪個大神可以推翻,給個如果不釋放單例物件,程式或者某個系統出現問題了?
另外我的另一個問題也沒人回答,附上廣告吧 http://bbs.csdn.net/topics/392027199?page=1#post-401640563
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
本人學生,不擅長交流,我回讀了我的提問,好像有點沖,希望哪位大神提提單例模式需要自動或手動析構不?uj5u.com熱心網友回復:
樓主理解正確, 首先,對作業系統來說,可以近似理解為, 系統資源的分配與回收都是按照行程為單位進行。我們撰寫的EXE程式,每運行一次就在作業系統中產生一個行程, 32位作業系統為該行程預先準備了4G 的記憶體地址空間(不是實際分配了這么多,僅僅是地址范圍),我們的EXE程式在運行中, 無論如何分配記憶體,銷毀記憶體,都是在這 4GB的地址空間內進行的, 因而無論在程式運行中 申請了多少記憶體資源, 當行程被銷毀時, 該行程的所有記憶體資源都被WIN回收。相當于這 4GB 一次性回收了, 所以不會發生記憶體泄漏。
現在我們通常說的記憶體泄漏, 主要是指程式運行程序中, 在4GB地址空間內申請了記憶體,而沒有釋放。導致程式還沒有結束時,就將4GB地址空間用完了, 導致程式可用資源耗盡而崩潰。
總的來說, 好的習慣是申請和釋放一一對應, 當然,只要系統資源足夠,程式不會因為無資源可用而崩潰,也不會影響作業系統本身變慢, 那么new了物件不釋放也沒啥大不了的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/71266.html
標籤:基礎類
上一篇:這是什么情況求解
