轉(zhuǎn)自:http://www.dakaren.com/index.php/archives/358.htm/page/3/
本人出現(xiàn)的中斷錯(cuò)誤:
AudioManager.exe 中的 0x657ac2b2 (msvcr80d.dll) 處未處理的異常: 0xC0000005: 讀取位置 0xccccccc8 時(shí)發(fā)生訪問(wèn)沖突
網(wǎng)上類似的帖子介紹:
開(kāi)發(fā)環(huán)境 VS2005 + MFC基于對(duì)話框的工程
點(diǎn)擊中斷跳到:
*---------------------------------------------------------------------------
*
* Memory management
*
--------------------------------------------------------------------------*/
/***
*static int CheckBytes() - verify byte range set to proper value
*
*Purpose:
* verify byte range set to proper value
*
*Entry:
* unsigned char *pb - pointer to start of byte range
* unsigned char bCheck - value byte range should be set to
* size_t nSize - size of byte range to be checked
*
*Return:
* TRUE - if all bytes in range equal bcheck
* FALSE otherwise
*
*******************************************************************************/
extern "C" static int __cdecl CheckBytes(
unsigned char * pb,
unsigned char bCheck,
size_t nSize
)
{
int bOkay = TRUE;
while (nSize--)
{
if (*pb++ != bCheck) //》中斷點(diǎn)
{
/* Internal error report is just noise; calling functions all report results - JWM */
/* _RPT3(_CRT_WARN, "memory check error at 0x%p = 0x%02X, should be 0x%02X.\n", */
/* (BYTE *)(pb-1),*(pb-1), bCheck); */
bOkay = FALSE;
}
}
return bOkay;
}
上述加粗紅色代碼運(yùn)行時(shí)報(bào)錯(cuò),大部分代碼都是自動(dòng)生成的
報(bào)錯(cuò)提示“Debug assertion failed ” 報(bào)錯(cuò)具體執(zhí)行代碼是
安裝目錄下的 dlgdata.cpp 的 40行 ,下面代碼中加粗紅色部分
網(wǎng)上的討論:
運(yùn)行到INT_PTR nResponse = dlg.DoModal();出錯(cuò)
跟進(jìn)去以后,發(fā)現(xiàn)具體位置在ASSERT(FALSE);這里
檢查下是否你把資源中的某個(gè)控件刪除了?
并且DoDataExchange還在使用這個(gè)控件的ID。
如果是這樣的話,解決的方法就是,查找這里nIDC的值對(duì)應(yīng)的ID的DEFINE,看看是否在DoDataExchange使用。
并且此ID無(wú)相關(guān)的在.rc文件中的定義。
》》》》》》》》》》》》》》》》》》》》》》》
本人是怎樣解決問(wèn)題的:
本人出現(xiàn)過(guò)上面的問(wèn)題,程序編譯一直是正確的,但運(yùn)行總是不能顯示對(duì)話框,顯示如題所示錯(cuò)誤。
根據(jù)csdn上面的說(shuō)明,找出問(wèn)題是resource.h里的幾個(gè)ID的關(guān)系,有ID沒(méi)有用過(guò)的刪除掉,然后在資源的rc文件里面對(duì)應(yīng)部分報(bào)錯(cuò),找出來(lái)刪掉即可。
花了幾天時(shí)間終于搞定這個(gè)問(wèn)題了,謝謝csdn及上面的朋友們。
=================================================
http://zhidao.baidu.com/question/252207188.html
Cgoods_inDlg dlg;
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
問(wèn)題出現(xiàn)在第二個(gè)this,調(diào)試的時(shí)候,到了第一個(gè)this,this的指針指向:
0x0012f544{Cmain_Dlg hWnd=0x000709ee}
到了第二個(gè)this,就變成了:
0x0012f544{Cmain_Dlg hWnd=???}
同樣一個(gè)文件,有其他類似的代碼:例如
Cgoods_outDlg dlg;
this->ShowWindow(SW_HIDE);
dlg.DoModal();
this->ShowWindow(SW_SHOW);
調(diào)試的時(shí)候兩個(gè)this的值都是一樣的!
如果沒(méi)有調(diào)試,那么當(dāng)執(zhí)行到上邊錯(cuò)誤的第二個(gè)this的時(shí)候,程序自動(dòng)關(guān)閉了,也沒(méi)有出現(xiàn)提示任何信息!僅僅是安安靜靜的關(guān)閉了
------------------------
這個(gè)問(wèn)題我已經(jīng)解決了!原因是我重裝了系統(tǒng),然后裝vc++6.0的時(shí)候出現(xiàn)錯(cuò)誤了!以上原來(lái)的代碼是一點(diǎn)問(wèn)題都沒(méi)有的!
如果在不重裝正確的vc++6.0的情況下,可以通過(guò)建立一個(gè)this相應(yīng)的對(duì)象指針temp,然后temp=this
最后temp->ShowWindow(SW_SHOW);問(wèn)題就解決了!不過(guò)后續(xù)的問(wèn)題很多,因?yàn)楸旧硎莢c++6.0的問(wèn)題!
(###)
聯(lián)系客服