簡體   English   中英

執行std :: deque-> front()時'deque iterator not dereferencable`

[英]'deque iterator not dereferencable` while doing std::deque->front()

以下代碼段導致斷言“不可取消deque迭代器”和異常:

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);

那么...怎么可能發生這種異常呢?

謝謝!

好了,解決了,這之間發生了錯誤的互斥鎖解鎖,從而導致了此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM