• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      內(nèi)存泄漏檢測方法研究綜述

      2018-01-04 10:59:48汪明曄
      電腦知識與技術 2018年28期
      關鍵詞:程序運行源碼開發(fā)人員

      汪明曄

      摘要:內(nèi)存泄漏是一個長期困擾軟件開發(fā)人員的問題,學術界針對該問題進行了長期的研究和討論。當前定位內(nèi)存泄漏位置的方法主要有靜態(tài)檢測、動態(tài)檢測、靜態(tài)檢測和動態(tài)檢測相結合的三種方法。本文將介紹內(nèi)存泄漏的原因,分別闡述上述三種內(nèi)存泄漏檢測的原理和方法,分析它們各自的優(yōu)勢和不足,最后指明內(nèi)存泄漏檢測技術未來的發(fā)展方向。

      中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)28-0276-01

      內(nèi)存泄漏問題的產(chǎn)生一般是由于軟件開發(fā)設計過程留下的代碼缺陷,導致程序向系統(tǒng)申請的堆區(qū)內(nèi)存沒有被回收或者沒有被及時回收。內(nèi)存泄漏的不斷積累通常會使程序的可用內(nèi)存空間減少,執(zhí)行速度減慢,甚至發(fā)生無法挽回的系統(tǒng)故障[1]。同時,內(nèi)存泄漏缺陷的存在還可能被一些針對軟件系統(tǒng)的攻擊行為(比如拒絕服務Denial of Service)所利用和放大,對軟件安全性產(chǎn)生十分不良的影響[2]。

      為了解決內(nèi)存泄漏問題,靜態(tài)檢測、動態(tài)檢測、靜態(tài)檢測和動態(tài)檢測相結合等方法被提出。通過這些檢測方法,軟件開發(fā)人員可以找到造成內(nèi)存泄漏的代碼位置,修復造成內(nèi)存泄漏的軟件缺陷。

      本文將重點介紹內(nèi)存泄漏檢測原理和方法,圍繞它們各自的優(yōu)勢和不足,分析每種方法的優(yōu)缺點,科學預測內(nèi)存泄漏檢測技術未來的發(fā)展方向。

      1 內(nèi)存泄漏檢測原理和方法

      靜態(tài)檢測方法是在目標程序運行前對程序源碼或目標代碼進行靜態(tài)分析,發(fā)現(xiàn)潛在的內(nèi)存泄漏代碼缺陷;動態(tài)檢測方法是當目標程序運行時,收集程序內(nèi)存操作信息,判斷是否發(fā)生內(nèi)存泄漏;為了提高動態(tài)檢測方法的效率,也為了減少對目標程序運行的干擾,可以先對程序的源碼做靜態(tài)分析或者目標機器代碼反匯編并做靜態(tài)分析,預測可能發(fā)生泄漏的代碼段,當程序運行時,只在這些代碼段被執(zhí)行時跟蹤收集程序的內(nèi)存操作信息,這便是靜態(tài)檢測和動態(tài)檢測相結合的方法。

      1.1 內(nèi)存泄漏靜態(tài)檢測

      靜態(tài)檢測原理是通過對目標程序的源碼或者目標代碼進行詞法語法分析或解析,發(fā)現(xiàn)潛在的代碼缺陷,報告給軟件開發(fā)人員,其一般流程如圖1所示:

      靜態(tài)檢測方法一般采用模式匹配預測可能發(fā)生內(nèi)存泄漏的位置,具體使用哪種模式因程序的高級語言或者匯編指令而異,通過判斷堆指針是否被正確釋放檢測是否發(fā)生內(nèi)存泄漏。

      1.2 內(nèi)存泄漏動態(tài)檢測

      動態(tài)檢測原理一般是通過截獲目標程序的內(nèi)存操作函數(shù)(如malloc、free等)獲取所申請的內(nèi)存的信息,通過判斷動態(tài)申請的內(nèi)存是否被釋放或者在預定時間內(nèi)被釋放檢測是否發(fā)生內(nèi)存泄漏。動態(tài)檢測方法的一般步驟如圖2所示:

      1.3 內(nèi)存泄漏靜態(tài)檢測和動態(tài)檢測相結合的方法

      靜態(tài)檢測和動態(tài)檢測相結合的方法綜合了靜態(tài)檢測和動態(tài)檢測兩種方法,該方法首先使用靜態(tài)檢測方法確定程序可能發(fā)生內(nèi)存泄漏的位置,當程序運行時,通過對這些潛在內(nèi)存泄漏位置進行動態(tài)跟蹤檢測,該方法的一般步驟如圖3所示:

      2 三種內(nèi)存泄漏方法的比較結論

      靜態(tài)檢測方法對程序的運行沒有影響,但是僅通過對程序靜態(tài)分析產(chǎn)生內(nèi)存泄漏警報存在誤報的情況;動態(tài)檢測方法通過跟蹤進程的內(nèi)存操作確認內(nèi)存泄漏的結果是否準確,但是會影響到程序的運行,而且存在漏報情況;靜態(tài)和動態(tài)檢測相結合的方法,通過靜態(tài)檢測減少了漏報的情況和對程序運行的干擾,通過動態(tài)檢測使檢測的結果更加可靠,是一種折中的方法,也是未來內(nèi)存泄漏檢測技術研究的發(fā)展趨勢。

      參考文獻:

      [1] 王喆. C/C++代碼內(nèi)存泄漏缺陷檢測方法研究[D].大連理工大學, 2012.

      [2] 李孟宸. 面向C語言程序內(nèi)存泄漏的動態(tài)確認技術[D].南京大學, 2014.

      【通聯(lián)編輯:梁書】

      猜你喜歡
      程序運行源碼開發(fā)人員
      基于網(wǎng)頁源碼結構理解的自適應爬蟲代碼生成方法
      計算機應用(2023年6期)2023-07-03 14:11:56
      基于圖神經(jīng)網(wǎng)絡的軟件源碼漏洞檢測方法
      計算機時代(2023年6期)2023-06-15 17:49:09
      企業(yè)如何保護源碼
      行政公益訴訟訴前程序運行檢視
      法大研究生(2020年2期)2020-01-19 01:43:04
      Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應用
      基于數(shù)據(jù)結構教輔系統(tǒng)的實驗課程改革
      計算機教育(2016年4期)2016-05-20 02:36:05
      讓Windows 10進入開發(fā)者模式
      電腦迷(2015年12期)2015-04-29 23:22:51
      后悔了?教你隱藏開發(fā)人員選項
      電腦愛好者(2015年6期)2015-04-03 01:20:56
      論刑事錯案的成因
      《刑事訴訟法》修改背景下刑事和解制度淺析
      醴陵市| 宿迁市| 高唐县| 尼木县| 保定市| 乌鲁木齐市| 噶尔县| 盐源县| 东城区| 长白| 长丰县| 忻城县| 金沙县| 招远市| 阜南县| 磐安县| 高邮市| 婺源县| 华宁县| 安岳县| 兴仁县| 永丰县| 佛学| 延吉市| 芦山县| 鄢陵县| 龙江县| 收藏| 长岛县| 灵璧县| 福安市| 伊通| 望都县| 古浪县| 临朐县| 眉山市| 凌云县| 土默特右旗| 六枝特区| 波密县| 青田县|