1、sigslot.h中
void slot_disconnect(has_slots<mt_policy>* pslot)
{
lock_block<mt_policy> lockblock(this);
typename connections_list::iterator it = m_connected_slots.begin();
typename connections_list::iterator itEnd = m_connected_slots.end();
while (it != itEnd)
{
typename connections_list::iterator itNext = it;
++itNext;
if ((*it)->getdest() == pslot)
{
m_connected_slots.erase(it);
// delete *it;
}
it = itNext;
}
}
改为
void slot_disconnect(has_slots<mt_policy>* pslot)
{
lock_block<mt_policy> lockblock(this);
typename connections_list::iterator it = m_connected_slots.begin();
typename connections_list::iterator itEnd = m_connected_slots.end();
while (it != itEnd)
{
typename connections_list::iterator itNext = it;
++itNext;
if ((*it)->getdest() == pslot)
{
delete *it;
m_connected_slots.erase(it);
}
it = itNext;
}
}
值得说明的是此文件内有多处,犯了同样的错误。
2、这处比较隐蔽,其原因是