【发布时间】:2015-08-04 09:16:56
【问题描述】:
假设我有一个类 Foo 定义如下。 如果我在 ~Foo() 中没有 bars.clear(),会不会导致内存泄漏? 我想知道这一点,因为 bars 是一个对象字段(不是指针字段),所以当 ~Foo() 被调用时, std::vector 的析构函数 应该被自动调用,所以我想知道 std::vector 的析构函数是否会透明地调用 .clear()。
class Foo
{
private:
std::vector<Bar*> bars;//object field
...
};
Foo::~Foo
{
//bars.clear();
}
【问题讨论】:
-
clear在这里没有任何区别。 -
谁拥有
Bars? -
@KarolyHorvath:当然是调酒师。
-
@MatteoItalia:很可能,他是个普通员工
-
我建议改用简单的
std::vector<Bar>,或者如果你真的需要指针std::vector<std::shared_ptr<Bar>>或std::vector<std::unique_ptr<Bar>>,这样你就不必关心任何资源管理。
标签: c++ memory-leaks stl