【发布时间】:2011-08-15 21:15:10
【问题描述】:
在我的 C++ 程序中,我使用 new 在一个函数中创建对象。这些对象被插入到一个集合中。当我想从集合中删除对象时,我在 for 循环中使用迭代器。当我从集合中删除对象时,我仍然需要删除对象以释放其内存,对吗?我尝试使用delete,但后来我收到一个错误,说没有分配被释放的指针。那么如何做到这一点呢?
这是我创建对象然后将其插入集合的代码
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;
}
如果没有“删除”部分,这可以正常工作。我添加它是因为我认为对象的内存没有被释放。
【问题讨论】:
标签: c++ pointers object memory delete-operator