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