В моей программе на 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;
}
] Это прекрасно работает без части «удалить». Я добавил его, потому что думал, что память объекта не освобождается.