问题解决——使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突
2014-12-18 13:33
417 查看
================声明=====================
本文原创,转载请保持文章的完整性(含本声明),并显要的著名作者和出处。
本文链接:/article/2122689.html
=========================================
电脑有一个SSD和一个HHD,SSD只有一个分区做系统盘,HHD分4个区:D、E、F、G。其中D盘放工程代码。
还原电脑的时候,诺顿抽风,把HHD的第一分区给我还原了……这是识别错硬盘的节奏吗?
=========================================
结果尚未备份的一小部分小代码没了。于是照着以前的思路又写了一下。
就这样,问题来了。
=========================================
开开心心地打算看一下代码效果,结果遇到了一个问题。
VS2010会自动在出现问题的地方停下,这是极好的。
但,可悲的是,我开了线程,出错的是线程函数。
于是开始搜资料。
=========================================
有用TryEnterCriticalSection版本代替EnterCriticalSection的,有添加宏取消com支持的,还有推测EnterCriticalSection嵌套的然后大家一致附和。
像这种问题都是看具体情况才能确定的,所以网上有各种各样的回答方式,不管真假各种转载。
大多不可信。
=========================================
想了半天,觉得还得从提示入手:最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突。
这位置?这个位置就是非法写入啊。
必然是写地址有问题。
那么只能在看下lpVoid的指针。没什么不对的样子,无果。
再上一步传入这个值的地方呢?
乍一看没什么,这不是有吗?但是这个this是谁呢?是CMainFrame*!而我要得是CMscomm*!
下面问题就好办了,传入指定类型的实参或者强制转换传入的值为正确的格式。
===============圣诞节就要到了,又要感受来自大宇宙的深深恶意了。==================
本文原创,转载请保持文章的完整性(含本声明),并显要的著名作者和出处。
本文链接:/article/2122689.html
=========================================
电脑有一个SSD和一个HHD,SSD只有一个分区做系统盘,HHD分4个区:D、E、F、G。其中D盘放工程代码。
还原电脑的时候,诺顿抽风,把HHD的第一分区给我还原了……这是识别错硬盘的节奏吗?
=========================================
结果尚未备份的一小部分小代码没了。于是照着以前的思路又写了一下。
就这样,问题来了。
=========================================
开开心心地打算看一下代码效果,结果遇到了一个问题。
VS2010会自动在出现问题的地方停下,这是极好的。
但,可悲的是,我开了线程,出错的是线程函数。
void CMainFrame::DealWithSlaveData(LPVOID lpVoid) { //test CMscommWLS* pSlaveComm=(CMscommWLS*)lpVoid; CString strTempData; EnterCriticalSection(&(pSlaveComm->m_csDataRecv)); strTempData=pSlaveComm->m_queStrData.front(); pSlaveComm->m_queStrData.pop(); LeaveCriticalSection(&(pSlaveComm->m_csDataRecv)); OutputDebugString(strTempData); }打上断点跟变量,发现没什么问题的样子,没有什么错误的指针。
于是开始搜资料。
=========================================
有用TryEnterCriticalSection版本代替EnterCriticalSection的,有添加宏取消com支持的,还有推测EnterCriticalSection嵌套的然后大家一致附和。
像这种问题都是看具体情况才能确定的,所以网上有各种各样的回答方式,不管真假各种转载。
大多不可信。
=========================================
想了半天,觉得还得从提示入手:最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突。
这位置?这个位置就是非法写入啊。
必然是写地址有问题。
那么只能在看下lpVoid的指针。没什么不对的样子,无果。
再上一步传入这个值的地方呢?
m_TPforSlave.Start(m_CommCtrl.m_hSmpDataNeedHandle,DealWithSlaveData,this);就是第三个参数了。
乍一看没什么,这不是有吗?但是这个this是谁呢?是CMainFrame*!而我要得是CMscomm*!
下面问题就好办了,传入指定类型的实参或者强制转换传入的值为正确的格式。
===============圣诞节就要到了,又要感受来自大宇宙的深深恶意了。==================
相关文章推荐
- 问题解决——使用CriticalSection后 0xXXXXXXXX处最可能的异常: 0xC0000005: 写入位置 0x00000014 时发生访问冲突
- VS 2013设置大地址解决地址写入冲突问题 0xC0000005: 写入位置 0x00000014 时发生访问冲突
- 0x669586df (QtCored4.dll) 处最可能的异常: 0xC0000005: 写入位置 0xabababab 时发生访问冲突
- VS2012 msvcr110d.dll xxxxxx处有未经处理的异常:0xC0000005:写入位置xxxxxx时发生访问冲突(scanf_s引起)-已解决
- 0x0FDFE224 (ucrtbased.dll)处(位于.exe 中)引发的异常: 0xC0000005: 写入位置 0x01100000 时发生访问冲突。 如有适用于此异常的处
- acad.exe 中的 0x25c70fc2 (???.arx) 处最可能的异常: 0xC0000005: 读取位置 0x0000009c 时发生访问冲突
- 链接库加载,“”(*.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x40B9CA00 时发生访问冲突”的问题所在
- 有未经处理的异常: 0xC0000005: 写入位置 0x01260000 时发生访问冲突
- ……处有未处理的异常:0xC0000005:写入位置……时发生访问冲突。
- 关于 xxxx.exe 中的 0xxxxxxxx 处最可能的异常: 0xC0000005: 读取位置 0xxxxxxxx 时发生访问冲突
- 解决xx.exe中的 0x004fd913 处未处理的异常: 0xC0000005: 读取位置 0xfeeefef2 时发生访问冲突
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- 0x00AE18F8 处有未经处理的异常: 0xC0000005: 读取位置 0x00000020 时发生访问冲突。
- “XXX.exe 中的 0xXXXXXXXX处未处理的异常: 0xC0000005: 读取位置 0xXXXXXXXX 时发生访问冲突”的一种解决方案
- 0x00881789 处的第一机会异常(在 receive_filter.exe 中): 0xC0000005: 读取位置 0x00000000 时发生访问冲突。
- MFC中关于m_pMainWnd = &dlg;处报错的解决方案,针对XX处未处理的异常:0xC0000005:写入位置0x00000020时发生访问冲突
- Qt 数据库 0x00bf56f7 处未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
- 程序运行时 0xC0000005: 读取位置 0x00000000 时发生访问冲突 ,可能是 com 组件引入各种问题
- c++中使用基类指针Vector 存放子类对象(0xcccccccc 处未处理的异常: 0xC0000005: 读取位置 0xcccccccc 时发生访问冲突 )
- (转载)0x0F1AFD76 (libcocos2d.dll) (Plane.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0x00000018 时发生访问冲突。