1. 程式人生 > >Debug Assertion Failed!

Debug Assertion Failed!

VC++調程式出現如下錯誤:

  Debug   Assertion   Failed!     
  Program:   D:wyuStuddebugwyuStud.exe   
  File:   afx.inl         
  Line:157   

  可能問題:1.野指標;2.記憶體洩露
  解決方法:

  1.看一看你的程式裡是不是有ASSERT()或VERIFY()語句。這兩個巨集是用來測試它的引數是否為真的。出現你說的,這說明你的指標或表達試有問題

  2.File: afx.inl 
    Line:157
    開啟看看就知道了

  3.vc++中遇到過此問題,在release下回忽略此問題,其實就是野指標的問題,在release版本下不用關心這個問題,也就是系統幫你給遮蔽了,但是問題還是存在的,真正使用的時候,偶爾會出來給你報個小錯。建立窗體等的時候沒有new,但是在析構的時候delete了,就會在debug環境下,報這樣的錯誤。開啟"編譯"->"配置"->"把裡面除了release其他的選項全部刪除,再構件就OK了
  4.首先如果你用的是vc6的話:
a.按F5執行你的程式
b.在出錯時,選擇“重試”
c.按ALT+7調出“呼叫棧”視窗
d.雙擊從上往下的最近一個自己定義的函式,系統會自動把該函式所在的檔案顯示出來,此時程式就暫停在游標處。一般來說錯誤就出在這附近。你可以通過檢視變數的值來確認

  5.可以先宣告一個臨時的CString變數然後作為暫存,然後把你取得的值放入其中,之後再賦給另一個你要使用的變數,即可解決問題 

  6.可能是在編寫函式呼叫指標變數時沒有分配空間(如果是在類中定義的指標變數,則指標在多個函式中引用時要分別重新分配空間),檢查一下。
  7.類似的問題,可能是因為輸出物件建立不成功,於是使用的時候用的就是空的物件,於是就出現問題了。

  8.“build->clean”

  9."Project"->"setting"->"點選c/c++"->"Category選項中選擇Preprocessor"
->"在Undefined symbols:填寫_DEBUG" 重新編譯執行即可

  10.我是在做一個ActiveX控制元件的時候遇到的,由於是初學者,
所以在一個事件處理函式中這些輕率的寫:
ClassMyControl pControl;
pControl.f1();   這些就會出現那個錯誤,改完Release後雖然異常被遮蔽了,但卻直接退出了,解決方法是,宣告一個ActiveX控制元件物件後,還要建立才能正在建立。
pControl.Create(``````);
pControl.f1();    OK!!!