今天写程序的时候碰到了内存泄露,以前也碰到过,内存泄露这东西太麻烦了,今天又搞了我很久,所以决定把每次泄露的情况写下来,以便以后做参考。
时间: 2015-1-5
问题标题:没有释放STL容器中的指针导致内存泄露
问题文字描述:我的目的是要动态生成选项卡,因为无法确定选项卡具体的个数,所以采用了容器。容器中添加的是一个窗口(也就是选项卡单个界面)的指针。
问题代码描述:
//定义选项卡窗口容器
vector<CPhaseTabDlg *> m_tabVect;
//将单个窗口添加到容器中
CPhaseTabDlg *pDlg = new CPhaseTabDlg();
pDlg->Create(IDD_PH_DLG, GetDlgItem(IDC_TAB1));
m_tabVect.push_back(pDlg);
解决方法:必须将容器中的指针delete掉,注意有些特殊的指针需要进行相应的特殊处理
for(UINT i = 0; i < m_tabVect.size(); i++)
{
CPhaseTabDlg *pDlg = m_tabVect.at(i);
pDlg->DestroyWindow(); //窗口必须要销毁,否则也会造成内存泄露
delete pDlg;
}
m_tabVect.clear();
可能还有很多方法,大家有好的建议欢迎提出,我将添加进来