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
奇怪的是这段代码有时候完全正常,而有时候会出错。
请问是何原因啊? 多谢!