伴侶的雷告訴我,我有內存泄漏在此代碼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>',繼續繁忙的生活而不用擔心內存管理。 –