std:map 析构函数是否调用键析构函数以及值析构函数?
Does std:map Destructor call Key Destructors as well as Value Destructors?
例如,以下是否泄漏?
Foo ( )
{
std:map<std:string, int> myMap;
myMap[std::string("Bar")] = 2983;
}
我相信它不会泄漏,但找不到有关这一点的具体文档。
是的,映射析构函数map::~map()
将为其管理的每个键和值调用析构函数并释放内存。
§ 23.2.1 表96——集装箱所需经费(续)
(&a)->X() void
the destructor is applied to every element of a; all the memory is deallocated.
是的,确实如此。 这在C++中是非常标准的东西,基本上标准库和 STL 中的所有内容都是这样工作的——除非你存储原始指针,否则总是调用析构函数。
您没有使用 new
动态分配任何内存。所有变量都在堆栈上分配。我在这里看不到任何内存泄漏。
相关文章:
- 析构函数调用
- 在具有向量的类构造函数中进行析构函数调用
- 从 c++ 中派生类的析构函数调用虚函数
- C++析构函数调用两次,堆栈分配的复合对象
- C++ 在析构函数调用之前删除的动态成员数组
- 析构函数调用c++中的一个向量
- Singleton模式中的手动析构函数调用:调用多次
- 从内部类的析构函数调用虚拟函数
- 与 boost odeint 集成期间的析构函数调用
- 堆栈展开如何与析构函数调用有关?
- C++:优化析构函数调用
- 以逗号分隔的表达式中的析构函数调用
- GCC 9.1 返回 void& 作为显式析构函数调用的结果类型。这是一个错误吗?
- 从C++中的虚拟析构函数调用虚拟方法
- 从指针返回对象时出现意外的析构函数调用
- 使用 decltype 显式析构函数调用
- C++析构函数调用了错误的对象
- 了解虚拟函数和析构函数调用
- 多重继承析构函数调用他自己和父析构函数?c++
- 析构函数调用表单不适当的库