例如,以下是否泄漏?
Foo ( )
{
std:map<std:string, int> myMap;
myMap[std::string("Bar")] = 2983;
}
我认为它没有泄漏,但在这一点上找不到具体的文件。
答案 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
动态分配任何内存。所有变量都在堆栈上分配。我在这里看不到任何记忆泄漏。