国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

內(nèi)存泄漏檢測(cè) 如何檢測(cè)C 的內(nèi)存泄漏,用哪些工具?

如何檢測(cè)C 的內(nèi)存泄漏,用哪些工具?你好,我很高興為你回答。如何檢測(cè)內(nèi)存泄漏:檢測(cè)內(nèi)存泄漏的關(guān)鍵是攔截對(duì)分配內(nèi)存和釋放內(nèi)存的函數(shù)的調(diào)用。通過(guò)截取這兩個(gè)函數(shù),我們可以跟蹤每個(gè)內(nèi)存塊的生命周期。例如,每

如何檢測(cè)C 的內(nèi)存泄漏,用哪些工具?

你好,我很高興為你回答。

如何檢測(cè)內(nèi)存泄漏:

檢測(cè)內(nèi)存泄漏的關(guān)鍵是攔截對(duì)分配內(nèi)存和釋放內(nèi)存的函數(shù)的調(diào)用。通過(guò)截取這兩個(gè)函數(shù),我們可以跟蹤每個(gè)內(nèi)存塊的生命周期。例如,每次成功分配內(nèi)存塊時(shí),其指針都會(huì)添加到全局列表中;每次釋放內(nèi)存塊時(shí),其指針都會(huì)從列表中刪除。這樣,當(dāng)程序結(jié)束時(shí),列表中剩余的指針指向尚未釋放的內(nèi)存。這只是對(duì)內(nèi)存泄漏檢測(cè)基本原理的簡(jiǎn)單描述。有關(guān)詳細(xì)算法,請(qǐng)參閱Steve Maguire的>。

如果要檢測(cè)堆內(nèi)存泄漏,需要截獲malloc/realloc/free和new/delete(事實(shí)上,malloc/free也用于new/delete,所以只需要截獲上一個(gè)組)。對(duì)于其他泄漏,可以使用類似的方法攔截相應(yīng)的分配和釋放函數(shù)。例如,要檢測(cè)BSTR的泄漏,需要截獲sysallocstring/sysfiresting;要檢測(cè)hmnu的泄漏,需要截獲createmenu/destroymenu。(有些資源有多個(gè)分配功能,只有一個(gè)釋放功能。例如,sysallocstringlen也可以用來(lái)分配BSTR。在這種情況下,需要截獲多個(gè)分配函數(shù))

在windows平臺(tái)上,有三種常用的檢測(cè)內(nèi)存泄漏的工具:MSc runtimelibrary內(nèi)置檢測(cè)函數(shù);插件檢測(cè)工具,如purify、boundschecker等;使用windowsnt的性能監(jiān)視器。這三種工具各有優(yōu)缺點(diǎn)。雖然MSc運(yùn)行庫(kù)在功能上比插件工具弱,但它是免費(fèi)的。雖然性能監(jiān)視器不能識(shí)別出有問(wèn)題的代碼,但是它能夠檢測(cè)出隱式內(nèi)存泄漏的存在,這是其他兩種工具所無(wú)法檢測(cè)的。