日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > 充電吧
[導(dǎo)讀]一種Windows下探測(cè)野指針的方法在一個(gè)大型項(xiàng)目中遇到了crt報(bào)告HEAP: Free Heap block XXXXXXXX modified at YYYYYYYY after it was f

一種Windows下探測(cè)野指針的方法

在一個(gè)大型項(xiàng)目中遇到了crt報(bào)告HEAP: Free Heap block XXXXXXXX modified at YYYYYYYY after it was freed。
原因很明確:野指針,但是因?yàn)轫?xiàng)目里大量使用了智能指針,因此要定位問(wèn)題就略頭痛了。

最初是準(zhǔn)備在程序運(yùn)行時(shí)建立內(nèi)存斷點(diǎn)以監(jiān)視所有對(duì)YYYYYYYY的寫(xiě)操作。但是剛開(kāi)始運(yùn)行的時(shí)候YYYYYYYY是不能訪(fǎng)問(wèn)的。
于是準(zhǔn)備重載new 操作以在該內(nèi)存塊能訪(fǎng)問(wèn)的時(shí)候下斷點(diǎn),然而對(duì)于一個(gè)要反復(fù)分配內(nèi)存的程序,手工監(jiān)視某個(gè)頁(yè)是否可以訪(fǎng)問(wèn)實(shí)在太麻煩了,根本沒(méi)有可操作性。于是我在new里面加了如下代碼:

{
?static BOOL bMark=FALSE;
?__try
?{
??if(!bMark)
??{
???int i=*((PUINT8)(/*出錯(cuò)地址*/);
???_ASSERT(FALSE);
??}
??bMark=TRUE;
?}
?__except(1)
?{
?}
}

每次new操作之后都試圖訪(fǎng)問(wèn)YYYYYYYY,如果不能訪(fǎng)問(wèn),則進(jìn)入異常處理部分直接忽略_ASSERT()及后面的代碼,繼續(xù)運(yùn)行。如果可以訪(fǎng)問(wèn),那么_ASSERT()會(huì)觸發(fā)一個(gè)斷點(diǎn)。此時(shí)可以手動(dòng)在YYYYYYYY處設(shè)置內(nèi)存斷點(diǎn),同時(shí)自動(dòng)將bMark設(shè)置為T(mén)RUE,后面再執(zhí)行到此的時(shí)候就不會(huì)停下來(lái)。如此只需要一次手動(dòng)操作即可達(dá)成設(shè)置斷點(diǎn)的效果。

實(shí)在是懶出了風(fēng)格之舉。 :-D

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉