以下代码在我的Mac上表现良好,但在我的linux上,它会导致分段错误。
std::list<sock>::iterator iter;
for(iter = sock_list.begin(); iter != sock_list.end(); ++iter) {
if ((*iter).fd == param1) {
sock_list.erase(iter);
}
}
经过搜索后,我发现通过添加 - 在第4行,这也使得它在我的linux上运行。
std::list<sock>::iterator iter;
for(iter = sock_list.begin(); iter != sock_list.end(); ++iter) {
if ((*iter).fd == param1) {
sock_list.erase(iter--);
}
}
虽然我做到了,但我仍然很好奇他们为什么表现不同。两者都有gcc 5.x和c ++ 11。