■環境
OS:Windows7
VS2005 VC++ MFCのソースコード
■状況
お聞きしたい内容は2つあります。
①かなり前から(らしい)のですが、Debugのリビルドをすると、ビルドがだんだん遅く
なりそのうち、修正してもいないソースでエラーとなって停止。停止後、再度ビルドをす
ると途中からビルドが始まり、問題なく最後まで進んでビルド完了する。
なお、Releaseのリビルドであれば、最後までビルドは進むため問題なし。
②リリースのリビルドでできた生成物を動作させると、とある場所でヒープ破壊メモリエ
ラーが発生。コード調査するも、原因不明。ところが、エラーが発生したコードだけを再
ビルドするとエラーが出てこなくなりました。リビルドが何かおかしくなったのでしょう
か。なお再現性があります。
①も②も、ビルド中に何かPCが他の作業をしていたということはなく、またPCスペッ
クも十分にあります。
どなたかご存知であれば、ご教授ください。
あまり確定的な事は言えません。あしからず。
①のVisual Studioが挙動不審となる現象は昔からあります。
(1)PCスペック不足。OSが64bitの方が動作が良好で、
かつメモリーが8GByte以上必要ですね(32bitOSだと意味ないですけど)。
(2)VSが古すぎるかもしれません(一応VS2005はWin7は対応OSには入ってます)。
VS2013、VS2015が最も安定したバージョン、VS2017はバグが多くて自分も様子見。
(参考) https://www.microsoft.com/ja-jp/dev/support/tools.aspx
Community版なら条件付きですがタダで使用できます。
②については、
(3)フルコンパイル(ソリューションの「リビルド」)してもだめなら、コードにバグがあ
ります。
(4)複数プロジェクトを持つソリューションの場合、
「オプション」の「プロジェクト及びソリューション」の「ビルド/実行」の
「並行にビルドするプロジェクトの最大数(X)」を「1」にしてみる。
(5)当たり前ですが(デフォルトがそうでなかったかもしれないので)、
プロジェクトのプロパティで、「警告レベル」は「Level3(/W3)」にすること。
この設定で、警告数が0でなければなりません。
警告が出るようならその内のいくつかはバグの可能性があります。
仲澤様
ご返信ありがとうございます。
VSのバージョンを変えたいところではありますが、
外部購入のライブラリがVS2005でしか対応してないようでして、
変えることができません。
②については、やはりコードのバグでしょうかね。。
slnファイルは1つだけで、「警告レベル」は「Level3(/W3)」でした。
バッファオーバーランの原因は、なかなか見つにくいです。
コードが大規模というところもありますが、、
お手数おかけしました。