在做C++開發過程中,忽略了很重要的問題:自己申請的內存沒有主動去釋放。
這樣造成大量內存的泄漏,問題比較嚴重。
如通過new 來申請的內存空間,必須手動去做delete 釋放操作。
規則如下:
1、成員變量爲指針對象,且在主函數中,爲成員變量賦值後,不再做其他操作。可以在析構函數中做刪除操作。
實例如下:CTest.cpp
CTest::CTest():m_t(new CTestA())//初始化列表實現
{
}
CTett::~CTest()
{
if(m_t != NULL)
{
delete m_t;
m_t = NULL:
}
}
CTest::Show()
{
m_t->Operation();
}
//CTestA實現的關鍵代碼
CTestA::Operation()
{
cout<<"CTestA Operation.."<<endl;
}
//客戶端main.cpp
int main()
{
CTest *t = new CTest();
t->Show();
//釋放內存
if(t != NULL )
{
delete t;
}
return 0;
}
2、另外一種情況是隻能定義後手動由用戶進行刪除的,如上例中對於在客戶端new 的對象t,必須用戶手動在外面做刪除操作。
注:之前在寫設計模式的實例時,完全忽視了內存泄漏的問題,已經修改。
僅以此文提醒自己在以後的編程過程中,切記要時刻提醒自己,申請內存後必須在用完後的第一時間做釋放操作。
也給初學C++的朋友們參考,儘量還要犯這類錯誤。
以上,僅供參考。