[源碼和文檔分享]基于重載算法的內(nèi)存泄漏檢測和內(nèi)存越界檢測

通過重載`new`,`delete`實現(xiàn)對在動態(tài)內(nèi)存分配中內(nèi)存越界和內(nèi)存泄露的自動檢測

1. 內(nèi)存泄漏

1.1 簡介

`內(nèi)存泄漏`是當程序不正確地進行內(nèi)存管理時出現(xiàn)的一種資源泄漏,表現(xiàn)為程序不再需要使用的內(nèi)存空間并沒有及時被釋放掉。內(nèi)存泄漏并非指物理內(nèi)存的消失,而是在程序分配了某段內(nèi)存后,由于設(shè)計錯誤,失去了對該段內(nèi)存的控制,造成了內(nèi)存的浪費.

1.2 危害

內(nèi)存泄漏減少計算機可用內(nèi)存,從而影響了計算機的性能。如果內(nèi)存泄漏過于嚴重,整個操作系統(tǒng)、應(yīng)用程序甚至?xí)罎?,計算機性能會大打折扣。但是,一般情況下,在現(xiàn)代操作系統(tǒng)中,當一個應(yīng)用程序結(jié)束的時候,該應(yīng)用程序所占用的內(nèi)存會被操作系統(tǒng)自動地全部釋放,因此,內(nèi)存泄漏的后果往往不會很嚴重,甚至不會被察覺到。但是,當長時間運行程序或者設(shè)備內(nèi)存較小時,內(nèi)存泄漏的問題就不容忽視。作為程序員,我們有必要盡力避免內(nèi)存泄漏,養(yǎng)成良好的編程習(xí)慣.

1.3 分類

內(nèi)存泄漏尤其會發(fā)生在沒有垃圾回收機制(Garbage collection)的編程語言,例如:C和C++,也就是說程序并不會自動實現(xiàn)內(nèi)存管理。對于C和C++這兩種語言,我們主要關(guān)心兩種類型的內(nèi)存泄漏:

堆內(nèi)存泄漏:程序通過`malloc`,`realloc`,`new`等函數(shù)在堆空間中申請了一塊內(nèi)存,但是在使用完后并沒有用`free`,`delete`等函數(shù)將所申請的內(nèi)存的內(nèi)存釋放掉,導(dǎo)致相應(yīng)的那塊內(nèi)存一直被占用。

系統(tǒng)資源泄漏:程序在使用系統(tǒng)分配的資源比如Bitmap,handle等之后,并沒有用相應(yīng)的函數(shù)釋放掉,導(dǎo)致相應(yīng)內(nèi)存的占用和系統(tǒng)資源的浪費。

本次只針對堆內(nèi)存泄漏提出自動檢測的方法。

1.4 解決內(nèi)存泄漏

解決內(nèi)存泄漏的困難之處在于:

編譯器不能發(fā)現(xiàn)這些問題

在程序運行時才有可能捕捉到這些錯誤,而且這些錯誤沒有明顯的癥狀,時隱時現(xiàn)

一般解決內(nèi)存泄漏必須需要程序員獲得源碼,通過修改源碼的方式解決,比較耗時

因此,我們需要想出一種簡便的方法,可以較大程度地自動檢測出內(nèi)存泄漏,及時提醒程序員對程序進行修正,在此我們通過重載`new`、`delete`函數(shù)的方式實現(xiàn)了自動檢測的功能,下面將介紹`new`和`delete`函數(shù)。

參考文檔和完整的文檔和源碼下載地址:

https://www.write-bug.com/article/106.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,680評論 1 32
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,680評論 19 139
  • 1.C和C++的區(qū)別?C++的特性?面向?qū)ο缶幊痰暮锰帲?答:c++在c的基礎(chǔ)上增添類,C是一個結(jié)構(gòu)化語言,它的重...
    杰倫哎呦哎呦閱讀 10,012評論 0 45
  • 總的來說,今天指數(shù)雖然漲幅有限,僅上證是紅的。同時,中石油這樣的巨無霸又貢獻頗多,但盤面的熱點還是不少的。 比如共...
    股票區(qū)閱讀 218評論 0 0
  • 早上朋友來信息了, 約見面辦事, 辦完事本來說走, 我說來了就喝會茶說說話, 開始泡茶, 幾杯茶下肚, 他開始講自...
    達瓦青措閱讀 268評論 0 0

友情鏈接更多精彩內(nèi)容