deque<rect*> rects
whereはrect
ユーザー定義のクラスです。それに侵入しようとするとinsert
、rect*
セグメンテーション違反が発生します。問題を、の呼び出しからgdb
呼び出された関数にまでさかのぼります。 ここで、はです。このエラーの原因は何ですか?__memmove_sse3()
rects.insert(it,new rect([constructor parameters]));
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;
}