我在此行遇到段错误:
v.erase(std::remove_if(v.begin(),elem.end(),
[](Elem * elem ){return elem->busy_ == false ;}));
使用gdb进行调查:
(gdb) print v.begin()
$6 = 0x842b120
(gdb) print v.end()
$7 = 0x0
(gdb) print v.back()
$8 = (Elem *) 0x842b120
Valgrind不会检测到任何问题(segfault除外)。 我将相关代码交换为:
auto begin = v.begin();
while( begin != v.end() )
{
if((*begin)->busy_ == false) begin=v.erase(begin);
else begin++;
}
我想念什么?