В вашем коде нет явных сбоев, и он выглядит нормально.
Сбой может произойти, только если в list<CNode*>
хранятся дубликаты CNode*
;что приведет вас к нескольким delete
.(это упоминается @ pau.estalella в комментариях).
Вы можете попробовать следующий метод, чтобы поймать, если есть дубликат CNode*
.
map<CNode*, int> duplicate;
while(m_RemoveNodeList.size() > 0)
{
list<CNode *>::const_iterator const it = m_RemoveNodeList.begin();
CNode * const pNode = *it;
if(duplicate.find(pNode) == duplicate.end())
duplicate[pNode] = 1;
else
cout<<"Caught: "<<pNode<<endl;
// ...
}