我有一個deque<rect*> rects
其中rect
是用戶定義的類。當我嘗試將insert
a rect*
加入其中時,出現分段錯誤。 gdb
將問題追溯到我呼叫rects.insert(it,new rect([constructor parameters]));
的函數__memmove_sse3()
,其中it
是deque<rect*>::iterator
。什麼可能導致這個錯誤?用戶自定義指針的分界錯誤
編輯: 這裏是我的代碼片段:
for(deque<rect*>::iterator it=rects.begin();it!=rects.end();++it)
{
rect r=*r1;
rect r2=*(*it);
if(!r2.there)
continue;
if(r.down>r2.up || r.up<r2.down || r.right<r2.left || r.left>r2.right)
continue;
if(r.left>r2.left)
rects.insert(it,new rect(r2.left,r2.down,r.left,r2.up,r2.color));
if(r.right<r2.right)
rects.insert(it,new rect(r.right,r2.down,r2.right,r2.up,r2.color));
if(r.up<r2.up)
rects.insert(it,new rect(max(r.left,r2.left),r.up,min(r.right,r2.right),r2.up,r2.color));
if(r.down>r2.down)
rects.insert(it,new rect(max(r.left,r2.left),r2.down,min(r.right,r2.right),r.down,r2.color));
r2.there=false;
}
迭代器失效了嗎? – Pubby
向我們顯示實際的代碼。 – Nawaz