我的std :: map看起来像这样。
std::map<int, std::string> *myMap = new std::map<int, std::string>[100];
如何删除此内容? delete myMap
足够吗?
答案 0 :(得分:7)
由于您已使用std::map
分配了100个new[]
,因此您必须使用delete[]
解除分配:
delete[] myMap;
对于每个new
/ new[]
,必须分别有delete
/ delete[]
。
答案 1 :(得分:2)
你有一系列地图,所以你几乎是正确的。您需要delete [] myMap
正确清理阵列。
但不要这样做。请改为使用vector
地图:
std::vector<std::map<int, std::string> > myMap(100);
这将自动为您完成所有内存管理和清理工作!
答案 2 :(得分:0)
升压:: scoped_ptr的&LT; std :: map&gt; myMap = new std :: map [100];
强烈建议使用boost :: scoped_ptr和boost :: shared_ptr(当一个内存位置被多个thords访问时),它们是智能指针并具有许多优点。它们支持自定义删除程序,因此它们对内存安全,这意味着您不必担心删除使用new或new []创建的内容。它们也是线程安全的。它们的实现是模板化的,它们适用于任何类型等。