根据valgrind的说法,这个问题是由下面的代码引起的。我想删除列表中的元素,该元素包含与ref相同的整数值。
while(itr1!=list1.end())
{
if(itr1->num==ref)
{
list1.erase(itr1);
}
else
{itr1++;}
}
list1 是一个 STL 列表,列表元素的类型是 NODE,它是一个结构体。num 是 NODE 中的整数元素之一。itr1 是 list1 的迭代器。ref 是一个整数值。
但是在我用下面的代码替换后,它是正确的
for(;itr1!=list1.end();itr1++)
{
if(itr1->num==ref)
{
list1.erase(itr1);
itr1--;
}
}
我真的看不出这两个片段之间的区别。
我不知道您是否可以找出代码不完整的问题。如果您需要,我可以发布所有程序。谢谢!