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