ごめん、しつこいようだけど、もう一言だけ追加させて。

>>856の前半をわざわざ書いたのは、C++以外の言語では
>>880の真ん中の仮定が通用するものが多いわけ。JavaとかDelphiとか。

だから、それを勘違いしていて、たとえこのコードでは問題なくても
他の場所でバグを抱え込んでいる可能性が充分あるから。


で、ヒープが壊れるという現象は、オーバーフローなんかも多いけど
この人の場合は「(ヒープから確保した以外の)未初期化の不定なポインタのdelete」
による可能性も十分あるかと。
もちろん、コピーや代入による「2重delete」の可能性も高いけど。