以下代码:
~A()
{
for (itr = mymap.begin(); itr != mymap.end() ++itr)
{
delete itr->second //the map look like this <std::string , T*>
}
}
A::Addnew(std::string name)
{
return mymap.insert(std::pair<std::string,T*>(name, new T)).second;
}
引入了内存泄漏,但是如果我将AddNew()
成员函数更改为:
itr = mymap.find(name);
if(itr == mymap.end())
{
return mymap.insert(std::pair<std::string,T*>(name, new T)).second;
}
那么就没有内存泄漏。
好像如果我不小心调用了第一个案例,我会引入很多新的 T,但我mymap.size()
无法跟踪它。谁能解释一下?