我有MYMAP的map<long,myClass *> myMap;
元素進行動態分配: myMap[1] = new myClass();
等 我想刪除所有的記憶,這是分配給myMap
元素。 它可以使用myMap.erase(myMap.begin(),myMap.end());
刪除一個標準庫圖
Q
刪除一個標準庫圖
0
A
回答
4
您必須首先刪除所有這些動態分配的元素,否則可能會泄漏內存。
for (std::map<long,myClass *>::iterator iter = myMap.begin();
iter != myMap.end(); ++iter)
{
delete (*iter).second;
}
myMap.clear();
一個更好的辦法是使用,而不是智能指針:
std::map<long, std::shared_ptr<myClass> > myMap;
std::shared_ptr<myClass> p(new myClass());
myMap[1] = p;
myMap.clear(); // no need to call delete manually anymore, clear is enough
4
不,你需要明確地遍歷值和delete
他們。
但最好的解決辦法是改爲使用map<long,std::shared_ptr<myClass> >
。
相關問題
- 1. 刪除Python標準庫中的變量
- 2. 刪除記錄在一定標準adotable
- 3. 刪除數據的兩個標準
- 4. BigQuery的標準SQL - 刪除多個表
- 5. 根據列標準刪除
- 6. 刪除另一個SQL Server 2008的標準中的一列
- 7. 從一個圖中刪除標題
- 8. 添加和一個JLabel刪除圖標
- 9. 從MapView中刪除標準標註
- 10. 熊貓刪除重複同一個標準
- 11. 刪除錄製圖標MediaStreamRecorder.js庫?
- 12. 刪除Windows窗體中的標準圖標
- 13. CKEditor用非標準標記刪除圖像
- 14. 刪除高標準列圖表上的「系列」標籤
- 15. Java標準庫 - 圖形?
- 16. 刪除一個子視圖
- 17. matplotlib:刪除一個子圖
- 18. 刪除圖像一個
- 19. 替代SecureString的一個.NET標準庫?
- 20. 刪除treegrid圖標
- 21. 如何從gradle項目中刪除java標準庫?
- 22. 刪除一切,但從一個語料庫的HTML標籤
- 23. 刪除圖像數據庫刪除symfony2
- 24. 按列標準刪除行的循環
- 25. Backbone.js的 - 刪除標準提交事件
- 26. 從標準列表中刪除元素
- 27. 根據匹配標準刪除行
- 28. PHP刪除非標準字符
- 29. Ruby從標準中刪除陣列
- 30. 根據標準刪除excel中的行
簡單的解決方法:使用智能指針。 – chris