なーんか動作がおかしいぞ?と思ったら、まずはthisを見よ。void*にキャストしたり、uintptr_tを使ったりといった場合は穴が開くほど見よ。
デバッグビルドなら0xcdcdcdcd、0x00000000、0xfeeefeeeを指してないか確認せよ。この値を見るだけで、もう原因はほぼわかる。 → ココ
これ以外の値がならば、別のインスタンスを指していないか確認せよ。別のインスタンスどころかでたらめかどうかは、普段からデバッガを使っているわれわれにとっては、異常な値かどうかなど一目でわかるはず。
thisが異常な値を指していても、メンバ変数にアクセスしなければ動いてしまう可能性もあるし、また、アクセスしても動いてしまう可能性もゼロではない。とにかく動作がおかしくなる。
この基本を忘れて、1日つぶしてしまったので書いておく。