您好,我想咨询一下: 我有 map 和 list
问题:
下面的析构函数实现是否正确:
for (map<string,SymbolTableNode*>::iterator i = symbolTable.begin();
i != symbolTable.end(); ++i)
{
delete i;
}
symbolTable.clear();
还是我想念一些内存?
关于列表:
list<MyClass2*> mylist;
mylist.push_front(new MyClass());
mylist.pop_front();
pop 会调用 delete 吗?或者在这种情况下我有内存泄漏?如果存在泄漏问题,我该怎么做才能避免呢?
谢谢。
最佳答案
没有 pop_front
不会调用删除。在弹出指针之前,您必须自己删除指针。:
list<MyClass2*> mylist;
mylist.push_front(new MyClass());
delete mylist.front();
mylist.pop_front();
析构函数应该是:
delete i->second;
关于c++ - STL map and list using in c++的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5989288/