使用std :: list :: remove()时,Purify显示可能的空闲内存读取

时间:2014-04-25 15:30:06

标签: c++ stl purify

Purify在使用std :: list :: remove()时显示了可能的空闲内存读取。我注意到std::list::remove()使用类型operator==进行比较。但是,我还注意到,如果列表中的第一个元素传递给std::list::remove(),它会在匹配时被删除,但它仍然用于与列表中的所有其他项进行比较。这会导致Purify将此标记为“潜在的可用内存读取”。我用std::list::remove()和一个迭代器替换了erase()调用,这更有效,因为它使得它在我的情况下只循环一次而不是两次。

是否有std::list::remove()保留第一个元素的原因?

1 个答案:

答案 0 :(得分:2)

这是GCC bug# 17012,已在4.3.0中修复。另请参阅Library Working Group Defect Report 526