我正在使用boost共享内存并拥有(key,value)的映射。使用下面的代码我尝试迭代map并删除条目。间歇性地看到崩溃。
for (int_vector::iterator it = v.begin(); it != v.end(); /* BLANK */){
if (*it == 1) //some condition
{
it = v.erase(it);
}
else {
++it;
}
}
上面的代码有什么问题? rbtree_best_fit.hpp
中有时会出现崩溃答案 0 :(得分:0)
当您使用共享内存时,我猜您有多个进程/线程访问该向量。如果您没有使用同步(在同一个库中有一个互斥锁),那么当一个进程被另一个进程遍历时,该向量很可能会被一个进程损坏。
除了上述考虑之外,您的代码在单线程环境中是正确的,如果您是单线程,那么下一个自然步骤是在Valgrind下运行该程序。