次のようなコードを取得しました。
for (set<GROUP*>::iterator i = Data.m_Resulting.begin(); i != Data.m_Resulting.end();)
{
printf("Deleting %d\n", (*i)->nId);
Data.m_MpptPool.erase(i++);
}
printf("Remains in pool: %d\n", Data.m_MpptPool.size());
// Dump Pool:
for (set<GROUP*>::iterator i = Data.m_MpptPool.begin(); i != Data.m_MpptPool.end(); i++)
{
printf("\t %d\n", (*i)->nId);
}
削除する前に set に 2 つのオブジェクトがあり、最初のループがそれらの 1 つを削除すると、.size() 関数は正しい数を示します (1) ただし、セットの内容を出力する 2 番目の for ループは、両方の要素をそこの。後でこの要素を参照すると、セグメンテーション違反が発生します。ここで何が問題になる可能性がありますか?