아래 "삭제"문은 객체를 "이중으로 해제"합니까? erase()
문 위의 객체의 소멸자를 호출해야하고 이미 해제하기 때문에 "delete"문이 객체를 이중으로 해제합니까?
(...object_list is a global vector<object*>...)
vector< object * >::iterator it, eit, iter;
object *p_object;
vector< object * > dead_objects;
it = object_list_.begin();
eit = object_list_.end();
//---collect pointers of all dead objects to dead_objects vector
for (; it != eit; it++)
{
p_object = *it;
if (p_object->is_dead() == false)
continue;
dead_objects.push_back(p_object);
}
//---free every dead object from the global object_list
for (iter = dead_objects.begin(); iter != dead_objects.end(); iter++)
{
p_object = *iter;
it = object_list_.begin();
eit = object_list_.end();
for (; it != eit; it++)
{
if (*it != p_object)
continue;
object_list_.erase(it);
delete p_object;
break;
}
}
나는 그것을해야하지, 질문을?
답변 해 주셔서 감사합니다 !! 다른 프로그램에서 나는지도을 사용하고지도에서 객체 *를 제거하기 위해 erase()를 호출 한 후 객체를 역 참조 할 때 프로그램이 중단 되었기 때문에 질문이있었습니다. (나는 VC++ 6을 사용하고있다.) 벡터