伴侣的雷告诉我,我有内存泄漏在此代码C++内存泄漏固定
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();
};
};
的问题是:
这是一个正确的内存泄漏修复?
在Derived的析构函数之前调用
Base
的析构函数吗?将同时删除
Base
或我必须手动删除类的所有成员fooes
vertor被自动删除?
什么是'Foo'?它是多态的吗? (和不相关的:'Base'的析构函数应该是虚拟的) –
你只是不应该使用哑指针的向量。要么使用智能指针的矢量,要么使用专门设计用来容纳指针的集合。 (还有其他可怕的方式会失败,如复制分配或复制结构。) –
如果你或你的伴侣没有时间,那么你绝对不能使用裸指针和'new'。制作一个'std :: vector>',继续繁忙的生活而不用担心内存管理。 –