記憶體洩漏的原因是什麼
還記得小時候很愛聽歌,也很愛看電視劇,但是那個時候還沒有網際網路,不能隨時隨地的想看什麼就看什麼。但是,幸好,我們有光碟。於是隨著時間的流逝,家裡的光碟越來越多,已經到了,放不下的地步。後來,科技發展,也出現了記憶體卡啦,u盤啦。既小巧又容量大,於是大家都紛紛開始用這些來儲存自己的東西。但是過了一段時間,突然發現自己的記憶體突然間變小了,這是為什麼呢?小編今天就給大家揭祕一下記憶體洩露的原因。
1.建立GDI物件後,比如LoadIcon,LoadImage,CreateImageList等等,沒有Destroy掉
2.建立DC後,比如GetDC, 沒有釋放DC控制代碼
3.new,malloc後沒有delete,free
4.建立核心物件比如CreateFile,CreateMutex,CreateThread,後沒有釋放核心物件控制代碼.
5.建立記憶體對映檔案,CreateFileMapping,MapViewOfFile後沒有CloseHandle,UnMapviewofFile
6.保留虛擬地址空間 VirtualAlloc,然後提交物理儲存器後,沒有釋放掉
記憶體洩漏解釋
簡單的說就是申請了一塊記憶體空間,使用完畢後沒有釋放掉。它的一般表現方式是程式執行時間越長,佔用記憶體越多,最終用盡全部記憶體,整個系統崩潰。由程式申請的一塊記憶體,且沒有任何一個指標指向它,那麼這塊記憶體就洩露了。
洩漏的分類
以發生的方式來分類,記憶體洩漏可以分為4類:
1. 一次性記憶體洩漏。
發生記憶體洩漏的程式碼只會被執行一次,或者由於演算法上的缺陷,導致總會有一塊僅且一塊記憶體發生洩漏。比如,在類的建構函式中分配記憶體,在解構函式中卻沒有釋放該記憶體,所以記憶體洩漏只會發生一次。
2. 隱式記憶體洩漏。
程式在執行過程中不停的分配記憶體,但是直到結束的時候才釋放記憶體。嚴格的說這裡並沒有發生記憶體洩漏,因為最終程式釋放了所有申請的記憶體。但是對於一個伺服器程式,需要執行幾天,幾周甚至幾個月,不及時釋放記憶體也可能導致最終耗盡系統的所有記憶體。所以,我們稱這類記憶體洩漏為隱式記憶體洩漏。
3. 常發性記憶體洩漏。
發生記憶體洩漏的程式碼會被多次執行到,每次被執行的時候都會導致一塊記憶體洩漏。
4. 偶發性記憶體洩漏。
發生記憶體洩漏的程式碼只有在某些特定環境或操作過程下才會發生。常發性和偶發性是相對的。對於特定的環境,偶發性的也許就變成了常發性的。所以測試環境和測試方法對檢測記憶體洩漏至關重要。
其實上面的介紹之後,大家可以發現,其實記憶體洩露不僅有它們自身質量的原因,也有我們作為主人,在使用方法上的失誤。所以小編建議,如果要儲存一些比較重要的東西,最好是買一些質量比較好的記憶體卡。還有就是,朋友們最好能改進一下自己的使用方法,儘量延長他們的使用壽命。比如,儘量不要反覆的存入,刪除,最好是能一次性存入。然後在電腦上使用的時候,儘量先查殺,然後再拔出。希望上面的內容能對你有所幫助。
- 記憶體洩漏的原因是什麼
- 最新教師工作述職報告
- 如何做好期末複習國旗下講話稿
- 老人預防脫髮的飲食原則
- 中醫治療食管炎的方法
- 周公解夢之夢見小女孩要東西吃
- 怎麼學好高三數學有哪些方法
- 光伏電廠實習心得體會_光伏電站學習總結
- 消防安全常識手抄報的文字圖片
- 新年給自己鼓勵的話
- 蓮藕的好吃做法有哪些
- 比較勵志好看的小說完結
- 學前班數學複習計劃應該怎麼寫
- 吸引異性的霸氣個性簽名
- 怎樣糾正孩子不好的學習態度
- 最新簡短傷感個性簽名句子
- 橄欖油美容技巧
- 幼兒園園長年終工作總結範文精選
- 關於二年級的感恩手抄報圖片
- 春天兒童吃什麼養生
- 康熙字典五行屬金的字
- 康熙字典五行屬木的字
- 康熙字典五行屬水的字
- 康熙字典五行屬火的字
- 康熙字典五行屬土的字