私はVisual Studio 2008 - > 2010から変更しています。私はstd :: setのセットでfindを評価するときに私のコードに奇妙なバグを見つけました。Visual C++ 2010 std :: set find壊れた
このバージョンでは、set :: iteratorがset :: const_iteratorと同じ型を持ち、標準と互換性があるという変更があります。しかし、私はなぜ以前に今働いていたコードのこのセクションがクラッシュを引き起こすのか理解できません。
void checkStop(Stop* stop)
{
set<Stop*> m_mustFindStops;
if (m_mustFindStops.find(stop) != m_mustFindStops.end()) // this line crashes for some reason??
{
// do some stuff
}
}
PS m_mustFindStopsがクラッシュすると空になります。
編集:クイック返信をありがとう...私はそれを単純なケースで再現することはできません - それはおそらくセット自体に問題はありません。ヒープの破損が原因かもしれないと思う - コンパイラの変更が突然同じコードと同じ入力データの破損を引き起こす理由を知りたがっていればいいと思う。
No repro。完全でコンパイル可能な例を投稿してください。 –
エラーを再現できません。これは何かが間違っていることを示唆しています。エラーを再現し、実行できる最小のコンパイル可能な例は完璧です。 –
私は、問題を発見したときに、自分のコードではなく、MSVC(これは天国以上にテストされている)がバグであると仮定すると、一人で、もしあれば)。あなたは@Jamieに行っていません(それは本当にあなたのタイトルと関係しています - テキスト自体は、バグがあなたのものだと思うかもしれないことを示しています)。たぶんあなたは "認知の不調"のWeb検索を行うべきです - "足で自分を撃って、次に銃を責める"という言葉は私がこれまでに聞いた最高の説明でした:-) – paxdiablo