我創建一個object_ptr並將其插入stl映射中。然後在代碼的其他部分,我使用鍵找到對象,並從地圖中刪除值並刪除對象。似乎代碼有內存泄漏。我怎樣才能避免它?從地圖中刪除對象指針時避免內存泄漏。
這裏是代碼片段:
void foo(){
Request * req = new Request();
MyMap.insert (std::pair<int, Request *> (address, req));
bar(address);
}
void bar(int address){
map<int, Request*>::iterator it_req = MyMap.find(address);
MyMap.erase(it_req);
delete it_req->second;
}
通過不使用原始指針作爲'mapped_type'。 – LogicStuff
交換'delete'和'erase'行。 –