c ++ operator new和删除容器的内存泄漏

时间:2012-12-19 18:16:52

标签: c++ list memory containers memory-leaks

似乎是一个简单的问题,但我很怀疑。当我使用运算符 {{1}创建的非空列表调用delete时,运算符Object是否会销毁所有 delete list元素}?当然会,但我需要确认。如您所见new有构造函数,但没有经销商。

代码:

Object

1 个答案:

答案 0 :(得分:6)

std::list析构函数将运行,它的元素的析构函数也将运行。也就是说,为什么要动态分配容器呢?你让容器无法为你管理内存。让它发挥作用;使用自动存储持续时间分配列表。

顺便说一下,Object 有一个析构函数,编译器会为你生成一个空的析构函数。虽然没有什么可以清理的,所以它什么都不做。此外,从类设计中可以清楚地看出Object的实例不拥有它在构造函数中所使用的指针,因此除非您明显更改设计,否则请务必取消分配它。