以下代码会导致断言“deque iterator not dereferencable”,后跟异常:
if (data[n].stateFlagQueue->empty()) cstate=0;
else
{
cstate=data[n].stateFlagQueue->front();
if (data[n].stateFlagQueue->size()>1) data[n].stateFlagQueue->pop();
}
断言发生在data [n] .stateFlagQueue-> front()而stateflagQueue的大小为3,因此有足够的数据可用。上面显示的整个代码由互斥锁保护,对于在自己的线程中运行的代码也是如此,并且使用数据填充stateFlagQueue:
if ((data->stateFlagQueue->empty()) ||
(data->stateFlagQueue->back()!=data->m_response.cstate))
data->stateFlagQueue->push(data->m_response.cstate);
那么......怎么会发生这种异常呢?
谢谢!
答案 0 :(得分:0)
好的,解决了,其间出现了一个错误的互斥锁解锁导致了这个问题。