Purify は、std::list::remove() を使用した場合に潜在的な空きメモリが読み取られることを明らかにしました。std::list::remove()
タイプを使用operator==
して比較を行うことに気付きました。std::list::remove()
ただし、リストの最初の要素が に渡されると、一致すると削除されますが、リスト内の他のすべてのアイテムと比較するために引き続き使用されることに気付きました。これにより、Purify はこれを「潜在的な空きメモリ読み取り」としてフラグを立てます。std::list::remove()
呼び出しをイテレータに置き換えましたerase()
。これは、私の状況ではループが 2 回ではなく 1 回だけになるため、より効率的です。
std::list::remove()
最初の要素を保持する理由はありますか?