std:map析构函数是否调用了Key Destructors以及Value Destructors?

时间:2013-10-03 11:23:40

标签: c++ map stl destructor

例如,以下是否泄漏?

Foo ( )
{
   std:map<std:string, int> myMap;
   myMap[std::string("Bar")] = 2983;
}

我认为它没有泄漏,但在这一点上找不到具体的文件。

3 个答案:

答案 0 :(得分:4)

是的,map析构函数map::~map()将为它管理的每个键和值调用析构函数并释放内存。

§23.2.1    表96 - 容器要求(续)

(&a)->X() void 
the destructor is applied to every element of a; all the memory is deallocated.

答案 1 :(得分:3)

是的,确实如此。这是C ++中相当标准的东西,基本上标准库和STL中的所有内容都是这样工作的 - 除非你存储原始指针,否则总是调用析构函数。

答案 2 :(得分:0)

您没有使用new动态分配任何内存。所有变量都在堆栈上分配。我在这里看不到任何记忆泄漏。