我的 std::map 看起来像这样。
std::map<int, std::string> *myMap = new std::map<int, std::string>[100];
我该如何删除这个?够delete myMap
了吗?
我的 std::map 看起来像这样。
std::map<int, std::string> *myMap = new std::map<int, std::string>[100];
我该如何删除这个?够delete myMap
了吗?
由于您已经分配了 100std::map
秒new[]
,因此您必须使用 取消分配它们delete[]
:
delete[] myMap;
对于每个new
/ new[]
,必须有一个delete
/ delete[]
(分别)。
你有一系列地图,所以你几乎是正确的。您需要delete [] myMap
正确清理阵列。
但不要那样做。使用 a vector
of maps 代替:
std::vector<std::map<int, std::string> > myMap(100);
这将自动为您处理所有内存管理和清理!
boost::scoped_ptr< std::map > myMap = new std::map[100];
强烈建议使用 boost::scoped_ptr 和 boost::shared_ptr(当一个内存位置被多个 thigns 访问时)它们是智能指针并且具有许多优点。它们支持自定义删除器,因此它们是内存安全的,这意味着您不必担心删除使用 new 或 new[] 创建的内容。它们也是线程安全的。他们的实现是模板化的,并且可以使用任何类型等。