博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MFC程序提示 0xC0000005: 读取位置 0x00000020 时发生访问冲突。
阅读量:4302 次
发布时间:2019-05-27

本文共 764 字,大约阅读时间需要 2 分钟。

这个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 
 

你可能感兴趣的文章
jenkins + maven+ gitlab 自动化部署
查看>>
Pull Request流程
查看>>
Lambda 表达式
查看>>
函数式数据处理(一)--流
查看>>
java 流使用
查看>>
java 用流收集数据
查看>>
java并行流
查看>>
CompletableFuture 组合式异步编程
查看>>
mysql查询某一个字段是否包含中文字符
查看>>
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>
Java:按值传递还是按引用传递详细解说
查看>>
Java中Synchronized的用法
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
接口技术原理
查看>>
五大串口的基本原理
查看>>
PCB设计技巧与注意事项
查看>>
linux进程之间通讯常用信号
查看>>
main函数带参数
查看>>