成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

【缺陷周話】第31期:錯(cuò)誤的內(nèi)存釋放

這篇文章主要為大家分析了【缺陷周話】第31期:錯(cuò)誤的內(nèi)存釋放的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì)易懂,操作細(xì)節(jié)合理,具有一定參考價(jià)值。如果感興趣的話,不妨跟著跟隨小編一起來(lái)看看,下面跟著小編一起深入學(xué)習(xí)“【缺陷周話】第31期:錯(cuò)誤的內(nèi)存釋放”的知識(shí)吧。

公司專(zhuān)注于為企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、商城網(wǎng)站建設(shè),小程序開(kāi)發(fā),軟件按需求定制制作等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。

1、錯(cuò)誤的內(nèi)存釋放方法

C語(yǔ)言中常見(jiàn)的內(nèi)存申請(qǐng)函數(shù)包括malloc()、 realloc()、 calloc(),它們雖然功能不同,但都對(duì)應(yīng)同一個(gè)內(nèi)存釋放函數(shù) free(),C++中對(duì)內(nèi)存的申請(qǐng)和釋放采用new/delete、new []/delete[] 方式。不管是 C 語(yǔ)言還是 C++ 語(yǔ)言,當(dāng)編寫(xiě)源代碼時(shí)要根據(jù)內(nèi)存申請(qǐng)的方法不同來(lái)對(duì)應(yīng)地選擇內(nèi)存釋放方法,避免使用錯(cuò)誤的內(nèi)存釋放。例如:混合使用C/C++的內(nèi)存申請(qǐng)/釋放,或混合使用標(biāo)量和矢量的內(nèi)存申請(qǐng)/釋放。

2、 錯(cuò)誤的內(nèi)存釋放方法的危害

使用錯(cuò)誤的內(nèi)存釋放方法,將會(huì)導(dǎo)致非預(yù)期的程序行為,甚至可能導(dǎo)致程序崩潰。在《effective C++(第二版)》條目5“對(duì)應(yīng)的 new 和 delete 要采用相同形式”中指出:“如果錯(cuò)誤地釋放對(duì)象中的元素,可能造成整個(gè)對(duì)象、甚至整個(gè)堆上的內(nèi)存結(jié)構(gòu)都發(fā)生損壞,從而發(fā)生內(nèi)存泄漏,甚至導(dǎo)致程序崩潰”。

CVE中也有一些與之相關(guān)的漏洞信息,從2018年1月至2019年4月,CVE中就有3條相關(guān)漏洞信息。漏洞信息如下:

CVE漏洞概況
CVE-2018-14948dilawar sound2017-11-27 及之前版本中的 wav-file.cc文件存在錯(cuò)誤的內(nèi)存釋放方法漏洞 (new[]/delete)。
CVE-2018-14947PDF2JSON 0.69 版本中的 XmlFonts.cc 文件的‘XmlFontAccu::CSStyle’函數(shù)存在錯(cuò)誤的內(nèi)存釋放漏洞(new[]/delete)。
CVE-2018-14946PDF2JSON 0.69 版本中的 ImgOutputDev.cc 文件的 HtmlString 類(lèi)存在錯(cuò)誤的內(nèi)存方法漏洞 (malloc/delete)。

3、示例代碼

示例源于 Samate Juliet Test Suite for C/C++ v1.3 (https://samate.nist.gov/SARD/testsuite.php),源文件名:CWE762_Mismatched_Memory_Management_Routines__new_array_delete_char_01.cpp。

3.1缺陷代碼

【缺陷周話】第31期:錯(cuò)誤的內(nèi)存釋放

在上述示例代碼中,第31行使用 new[] 創(chuàng)建對(duì)象數(shù)組,在第34行使用 delete 進(jìn)行釋放,由于在釋放對(duì)象數(shù)組時(shí),沒(méi)有使用 new[] 對(duì)應(yīng)的 delete[],因此存在“錯(cuò)誤的內(nèi)存釋放方法”問(wèn)題。

使用代碼衛(wèi)士對(duì)上述示例代碼進(jìn)行檢測(cè),可以檢出“錯(cuò)誤的內(nèi)存釋放方法”缺陷,顯示等級(jí)為中。如圖1所示:

【缺陷周話】第31期:錯(cuò)誤的內(nèi)存釋放

圖1:錯(cuò)誤的內(nèi)存釋放方法的檢測(cè)示例

3.2 修復(fù)代碼

【缺陷周話】第31期:錯(cuò)誤的內(nèi)存釋放

在上述修復(fù)代碼中,Samate 給出的修復(fù)方式為:在第31行通過(guò) new[] 創(chuàng)建對(duì)象數(shù)組,并在第33行使用 delete[] 進(jìn)行釋放。從而避免了錯(cuò)誤的內(nèi)存釋放方法。

使用代碼衛(wèi)士對(duì)修復(fù)后的代碼進(jìn)行檢測(cè),可以看到已不存在“錯(cuò)誤的內(nèi)存釋放方法”缺陷。如圖2:

【缺陷周話】第31期:錯(cuò)誤的內(nèi)存釋放

圖2:修復(fù)后檢測(cè)結(jié)果

4、  如何避免錯(cuò)誤的內(nèi)存釋放方法

要避免錯(cuò)誤的內(nèi)存釋放方法,需要注意以下幾點(diǎn):

(1)在進(jìn)行內(nèi)存釋放時(shí),明確內(nèi)存申請(qǐng)使用的方法,避免由于程序結(jié)構(gòu)復(fù)雜、人員疏忽而導(dǎo)致使用了錯(cuò)誤的釋放方法。

(2)使用源代碼靜態(tài)分析工具,可以有效對(duì)該類(lèi)問(wèn)題進(jìn)行檢測(cè)。

關(guān)于“【缺陷周話】第31期:錯(cuò)誤的內(nèi)存釋放”就介紹到這了,更多相關(guān)內(nèi)容可以搜索創(chuàng)新互聯(lián)以前的文章,希望能夠幫助大家答疑解惑,請(qǐng)多多支持創(chuàng)新互聯(lián)網(wǎng)站!

網(wǎng)站欄目:【缺陷周話】第31期:錯(cuò)誤的內(nèi)存釋放
本文鏈接:http://jinyejixie.com/article10/gpshdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、App設(shè)計(jì)網(wǎng)站排名、云服務(wù)器、標(biāo)簽優(yōu)化、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
桓仁| 竹山县| 青河县| 陇南市| 娱乐| 镇江市| 湖南省| 泗洪县| 无为县| 南城县| 山阴县| 延庆县| 惠水县| 韶关市| 惠安县| 固始县| 沁源县| 井陉县| 玉溪市| 商丘市| 湾仔区| 石首市| 灵武市| 阿勒泰市| 石阡县| 偃师市| 嘉义县| 章丘市| 外汇| 洪泽县| 建宁县| 安多县| 阿拉善左旗| 黔西| 嘉义市| 五寨县| 高密市| 郯城县| 项城市| 锦州市| 通榆县|