执行std :: deque-> front()时'deque iterator not dereferencable`

时间:2014-09-16 07:01:22

标签: c++ visual-c++ stl visual-studio-2013 queue

以下代码会导致断言“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);

那么......怎么会发生这种异常呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

好的,解决了,其间出现了一个错误的互斥锁解锁导致了这个问题。