MFC程序提示 0xC0000005: 读取位置 0x00000020 时发生访问冲突。
這個bug困擾我兩天了,我在win7下開發的MFC程序,在win7下一只運行良好,放到同事的win10機子上就出問題了,在點擊按鈕彈出子窗口時必崩,在win7下仔細調試才發現:調用DoModal()后 ,會輸出“ 0xC0000005: 讀取位置 0x00000020 時發生訪問沖突 ” 但程序沒有崩潰,win10則是直接報錯崩潰。上網百度,類似問題的也不少,但是沒有固定的解決方案,分析可能原因是使用空指針導致程序崩潰。沒辦法就用排查法,一段一段檢查問題,最后發現是ON_WM_SIZE消息中調用初始化函數出的問題,在DoModal()后自動觸發ON_WM_SIZE消息事件,其中有未判斷就使用的指針調用,:
?? ??? ?((CButton *)GetDlgItem(IDC_RADIO_ALL_PLAYER))->SetCheck(TRUE);//選上?? ??? ?((CButton *)GetDlgItem(IDC_RADIO_NEW_PLAYER))->SetCheck(FALSE);//不選上
改成這樣調試發現果然是指針的問題,直接跳過,沒有報錯!
?? ?if (GetDlgItem(IDC_RADIO_ALL_PLAYER))?? ??? ?((CButton *)GetDlgItem(IDC_RADIO_ALL_PLAYER))->SetCheck(TRUE);//選上?? ?if (GetDlgItem(IDC_RADIO_NEW_PLAYER))?? ??? ?((CButton *)GetDlgItem(IDC_RADIO_NEW_PLAYER))->SetCheck(FALSE);//不選上
---------------------?
原文:https://blog.csdn.net/zhouxicai/article/details/52862488?
?
總結
以上是生活随笔為你收集整理的MFC程序提示 0xC0000005: 读取位置 0x00000020 时发生访问冲突。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多媒体视频知识入门贴zt(一)
- 下一篇: H.264算法的DSP移植与优化