1

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

是否有理由std::list::remove()保留第一个元素?

4

1 回答 1

2

这是GCC 错误# 17012,已在 4.3.0 中修复。另见图书馆工作组缺陷报告 526

于 2014-04-25T15:50:59.430 回答