記憶體洩漏的原因是什麼

General 更新 2024年04月23日

  還記得小時候很愛聽歌,也很愛看電視劇,但是那個時候還沒有網際網路,不能隨時隨地的想看什麼就看什麼。但是,幸好,我們有光碟。於是隨著時間的流逝,家裡的光碟越來越多,已經到了,放不下的地步。後來,科技發展,也出現了記憶體卡啦,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. 偶發性記憶體洩漏。

  發生記憶體洩漏的程式碼只有在某些特定環境或操作過程下才會發生。常發性和偶發性是相對的。對於特定的環境,偶發性的也許就變成了常發性的。所以測試環境和測試方法對檢測記憶體洩漏至關重要。

  其實上面的介紹之後,大家可以發現,其實記憶體洩露不僅有它們自身質量的原因,也有我們作為主人,在使用方法上的失誤。所以小編建議,如果要儲存一些比較重要的東西,最好是買一些質量比較好的記憶體卡。還有就是,朋友們最好能改進一下自己的使用方法,儘量延長他們的使用壽命。比如,儘量不要反覆的存入,刪除,最好是能一次性存入。然後在電腦上使用的時候,儘量先查殺,然後再拔出。希望上面的內容能對你有所幫助。

記憶體條型號有哪些
無線滑鼠沒反應怎麼解決
相關知識
記憶體洩漏的原因是什麼
記憶體暴漲的原因是什麼
記憶力不好的原因是什麼樣
兒童記憶力不好的原因是什麼
記憶力變差的原因是什麼
導致記憶力減退的原因是什麼
青年人記憶力減退的原因是什麼
記憶力減退的原因是什麼
導致記憶力下降的原因是什麼
老年人記憶力減退的原因是什麼