В моей программе на C ++ я создаю объекты в одной функции, используя new. Эти объекты вставляются в набор. Когда я хочу удалить объекты из набора, я использую итератор в цикле for. Когда я удаляю объект из набора, мне все еще нужно удалить объект, чтобы освободить его память, правильно? Я попытался использовать удаление, но затем я получаю сообщение об ошибке, что освобождаемый указатель не был выделен Так как это можно сделать?
Вот код, в котором я создаю объект и затем вставляю его в набор
set <myObject> myobjectlist;
myObject *myobject = new myObject;
myobjectlist.insert(*myobject);
В другой функции я пытаюсь удалить объект из набора и освободить его память:
for (set<myObject>::iterator i = myobjectlist.begin(); i != myobjectlist.end(); i++)
if (i->myObjectID == myObjectID)
{
myobjectlist.erase(*i);
delete &i;
break;
}
Это прекрасно работает без части 'delete'. Я добавил его, потому что думал, что память об объекте не освобождается.