小弟遇到一个问题,相关代码如下:
EventQueue->AddToEnd(pEv);
AddToEnd这个函数定义如下:
BOOL CMyEventQueue::AddToEnd(MyEvent *pEv)
{
csEnter(m_lock);
m_Queue.push_back(pEv);
csLeave(m_lock);
return TRUE;
}
执行到EventQueue->AddToEnd(pEv);时,汇编代码如下:
276: EventQueue->AddToEnd(pEv);
0040C754 mov eax,dword ptr [ebp-18h]
0040C757 push eax
0040C758 mov ecx,dword ptr [ebp-4]
0040C75B mov ecx,dword ptr [ecx+144h] <===单步运行完此句跳出错误
0040C761 call @ILT+560(CMyEventQueue::AddToEnd) (00401235)
错误信息:
Unhandled exception in test.exe: 0xC0000005:Access Violation
奇怪的是这段代码有时候完全正常,而有时候会出错。
请问是何原因啊? 多谢!
EventQueue->AddToEnd(pEv);
AddToEnd这个函数定义如下:
BOOL CMyEventQueue::AddToEnd(MyEvent *pEv)
{
csEnter(m_lock);
m_Queue.push_back(pEv);
csLeave(m_lock);
return TRUE;
}
执行到EventQueue->AddToEnd(pEv);时,汇编代码如下:
276: EventQueue->AddToEnd(pEv);
0040C754 mov eax,dword ptr [ebp-18h]
0040C757 push eax
0040C758 mov ecx,dword ptr [ebp-4]
0040C75B mov ecx,dword ptr [ecx+144h] <===单步运行完此句跳出错误
0040C761 call @ILT+560(CMyEventQueue::AddToEnd) (00401235)
错误信息:
Unhandled exception in test.exe: 0xC0000005:Access Violation
奇怪的是这段代码有时候完全正常,而有时候会出错。
请问是何原因啊? 多谢!
EventQueue->AddToEnd(pEv); ---------
++C++
---------
不过,执行完这行code,紧接着执行return TRUE;再F5执行“}”的时候,又出现
Unhandled exception in test.exe: 0xC0000005:Access Violation请问这是为何啊?多谢!bool func()
{
......
EventQueue->AddToEnd(pEv);
return TRUE;
}