VC++調(diào)程序出現(xiàn)如下錯(cuò)誤:
Debug Assertion Failed!
Program: D:wyuStuddebugwyuStud.exe
File: afx.inl
Line:157
可能問題:1.野指針;2.內(nèi)存泄露
解決方法:
1.看一看你的程序里是不是有ASSERT()或VERIFY()語(yǔ)句。這兩個(gè)宏是用來(lái)測(cè)試它的參數(shù)是否為真的。出現(xiàn)你說(shuō)的,這說(shuō)明你的指針或表達(dá)試有問題
2.File: afx.inl
Line:157
打開看看就知道了
3.vc++中遇到過(guò)此問題,在release下回忽略此問題,其實(shí)就是野指針的問題,在release版本下不用關(guān)心這個(gè)問題,也就是系統(tǒng)幫你給屏蔽了,但是問題還是存在的,真正使用的時(shí)候,偶爾會(huì)出來(lái)給你報(bào)個(gè)小錯(cuò)。創(chuàng)建窗體等的時(shí)候沒有new,但是在析構(gòu)的時(shí)候delete了,就會(huì)在debug環(huán)境下,報(bào)這樣的錯(cuò)誤。打開"編譯"->"配置"->"把里面除了release其他的選項(xiàng)全部刪除,再構(gòu)件就OK了
4.首先如果你用的是vc6的話:
a.按F5運(yùn)行你的程序
b.在出錯(cuò)時(shí),選擇“重試”
c.按ALT+7調(diào)出“調(diào)用棧”窗口
d.雙擊從上往下的最近一個(gè)自己定義的函數(shù),系統(tǒng)會(huì)自動(dòng)把該函數(shù)所在的文件顯示出來(lái),此時(shí)程序就暫停在光標(biāo)處。一般來(lái)說(shuō)錯(cuò)誤就出在這附近。你可以通過(guò)查看變量的值來(lái)確認(rèn)
5.可以先聲明一個(gè)臨時(shí)的CString變量然后作為暫存,然后把你取得的值放入其中,之后再賦給另一個(gè)你要使用的變量,即可解決問題
6.可能是在編寫函數(shù)調(diào)用指針變量時(shí)沒有分配空間(如果是在類中定義的指針變量,則指針在多個(gè)函數(shù)中引用時(shí)要分別重新分配空間),檢查一下。
7.類似的問題,可能是因?yàn)檩敵鰧?duì)象創(chuàng)建不成功,于是使用的時(shí)候用的就是空的對(duì)象,于是就出現(xiàn)問題了。
8.“build->clean”
9."Project"->"setting"->"點(diǎn)擊c/c++"->"Category選項(xiàng)中選擇Preprocessor"
->"在Undefined symbols:填寫_DEBUG" 重新編譯運(yùn)行即可
10.我是在做一個(gè)ActiveX控件的時(shí)候遇到的,由于是初學(xué)者,
所以在一個(gè)事件處理函數(shù)中這些輕率的寫:
ClassMyControl pControl;
pControl.f1(); 這些就會(huì)出現(xiàn)那個(gè)錯(cuò)誤,改完Release后雖然異常被屏蔽了,但卻直接退出了,解決方法是,聲明一個(gè)ActiveX控件對(duì)象后,還要?jiǎng)?chuàng)建才能正在創(chuàng)建。
pControl.Create(``````);
pControl.f1(); OK!!!
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。