这个问题貌似以前也遇到过,今天再次遇到,debug进去也发现内存都释放了,但结果还是有内存泄露,很是纳闷!最好还是发现了问题所在!
注意下面这个循环加粗那个话,当把 m_pFrameObject[i] 的数据压入到 m_pVideoObject 中后,把 m_pFrameObject[i] 的指针给删了,则m_pFrameObject[i+1] 的指针移动到了 m_pFrameObject[i] 的位置,然后在 i++,此时则漏过了遍历 m_pFrameObject[i+1] 的数据,最后把 m_pFrameObject 清空时则造成了内存泄露!
// add new dynamic object into video object list
for (int i=0; i< int(m_pFrameObject.size()); i++ )
{
CDynamicObject* pDynamicObject = m_pFrameObject[i];
m_pVideoObject.push_back(pDynamicObject);
m_pFrameObject.erase(m_pFrameObject.begin() + i);
}
m_pFrameObject.clear();