我的一个朋友告诉我,这段代码有内存泄漏
Base
{
public:
vector<Foo*> fooes;
};
Derived : public Base
{
public:
Derived ( )
{
for ( int i = 0 ; i < 10 ; i++ )
{
this.fooes.push_back ( new Foo() );
}
};
};
但是他很忙,帮不了我,所以我问你,内存泄漏在哪里?我该如何解决?据我了解,内存泄漏是我不删除由创建的对象new Foo()
,所以我可以添加一个析构函数Base
,并清除fooes
向量,对吧?
Base
{
public:
vector<Foo*> fooes;
~Base ( )
{
this->fooes.clear();
};
};
问题是:
这是一个正确的内存泄漏修复吗?
是否会在
Base
Derived 的析构函数之前调用析构函数?删除时会
fooes
自动删除vertorBase
还是我必须手动删除班级的所有成员?