int the_post = 0;
for (t_peers::iterator i = m_peers.begin(); i != m_peers.end(); ++the_post)
{
TRACE1("the_post %d\n",the_post);
if (i->post_select(fd_read_set, fd_write_set, fd_except_set))
{
i->Close();
i = m_peers.erase(i);
}
else
++i;
}
我是跟踪测这段代码的时候总是发现程序在乱跳,并不按照我们想象的步骤走,请问高手是什么原因?例如本来m_peers.size() = 100时,当它走到第20个的时候,突然跳到the_post = 50去。
for (t_peers::iterator i = m_peers.begin(); i != m_peers.end(); ++the_post)
{
TRACE1("the_post %d\n",the_post);
if (i->post_select(fd_read_set, fd_write_set, fd_except_set))
{
i->Close();
i = m_peers.erase(i);
}
else
++i;
}
我是跟踪测这段代码的时候总是发现程序在乱跳,并不按照我们想象的步骤走,请问高手是什么原因?例如本来m_peers.size() = 100时,当它走到第20个的时候,突然跳到the_post = 50去。
i = m_peers.erase(i);
......
++i;
...
你一直在改变这个循环子????
不变才怪!
Clear
ReBuilt All
就可以了。
同意楼上,如果很明显的乱跳,ReBuilt All
已经试过,问题是一样的!!!