18禁网站免费,成年人黄色视频网站,熟妇高潮一区二区在线播放,国产精品高潮呻吟AV

學習啦>學習電腦>選購與維護>臺式機>

內存泄漏的原因是什么

時間: 孫勝龍652 分享

  還記得小時候很愛聽歌,也很愛看電視劇,但是那個時候還沒有互聯網,不能隨時隨地的想看什么就看什么。但是,幸好,我們有光碟。于是隨著時間的流逝,家里的光碟越來越多,已經到了,放不下的地步。后來,科技發(fā)展,也出現了內存卡啦,u盤啦。既小巧又容量大,于是大家都紛紛開始用這些來存儲自己的東西。但是過了一段時間,突然發(fā)現自己的內存突然間變小了,這是為什么呢?學習啦小編今天就給大家揭秘一下內存泄露的原因。

  1.創(chuàng)建GDI對象后,比如LoadIcon,LoadImage,CreateImageList等等,沒有Destroy掉

  2.創(chuàng)建DC后,比如GetDC(), 沒有釋放DC句柄

  3.new,malloc后沒有delete,free

  4.創(chuàng)建內核對象(比如CreateFile,CreateMutex,CreateThread),后沒有釋放內核對象句柄.

  5.創(chuàng)建內存映射文件,CreateFileMapping,MapViewOfFile后沒有CloseHandle(),UnMapviewofFile

  6.保留虛擬地址空間 VirtualAlloc(),然后提交物理存儲器后,沒有釋放掉

  內存泄漏解釋

  簡單的說就是申請了一塊內存空間,使用完畢后沒有釋放掉。它的一般表現方式是程序運行時間越長,占用內存越多,最終用盡全部內存,整個系統(tǒng)崩潰。由程序申請的一塊內存,且沒有任何一個指針指向它,那么這塊內存就泄露了。

  泄漏的分類

  以發(fā)生的方式來分類,內存泄漏可以分為4類:

  (1). 一次性內存泄漏。

  發(fā)生內存泄漏的代碼只會被執(zhí)行一次,或者由于算法上的缺陷,導致總會有一塊僅且一塊內存發(fā)生泄漏。比如,在類的構造函數中分配內存,在析構函數中卻沒有釋放該內存,所以內存泄漏只會發(fā)生一次。

  (2). 隱式內存泄漏。

  程序在運行過程中不停的分配內存,但是直到結束的時候才釋放內存。嚴格的說這里并沒有發(fā)生內存泄漏,因為最終程序釋放了所有申請的內存。但是對于一個服務器程序,需要運行幾天,幾周甚至幾個月,不及時釋放內存也可能導致最終耗盡系統(tǒng)的所有內存。所以,我們稱這類內存泄漏為隱式內存泄漏。

  (3). 常發(fā)性內存泄漏。

  發(fā)生內存泄漏的代碼會被多次執(zhí)行到,每次被執(zhí)行的時候都會導致一塊內存泄漏。

  (4). 偶發(fā)性內存泄漏。

  發(fā)生內存泄漏的代碼只有在某些特定環(huán)境或操作過程下才會發(fā)生。常發(fā)性和偶發(fā)性是相對的。對于特定的環(huán)境,偶發(fā)性的也許就變成了常發(fā)性的。所以測試環(huán)境和測試方法對檢測內存泄漏至關重要。

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

300958