4

例如,以下是否泄漏?

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

我相信它不会泄漏,但在这一点上找不到具体的文档。

4

3 回答 3

5

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

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

(&a)->X() void 
the destructor is applied to every element of a; all the memory is deallocated.
于 2013-10-03T11:42:43.123 回答
4

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

于 2013-10-03T11:26:12.167 回答
0

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

于 2013-10-03T11:25:48.217 回答