コンパイルオプションについて

[戻る]
Keiko 2001/11/13(火) 11:13:13
はじめまして、現在グラフ表示プログラムを作成しているのですが、
以下のような現象が出てしまいコンパイルオプションを変更したら直りました。
これって本当の解決になっているのでしょうか?

Win2000上では、エラーにならないのですが、Win98である動作を
させると、「0x〜の命令が0xのメモリを参照しましたが・・・」エラーが
出てしまいます。
Win98上でDebug動作させた場合には、エラーが発生しません。

コンパイルオプションの最適化を「デフォルト」⇒「実行速度」に
変更したら、エラーが出なくなりました。
これってどうしてなのでしょうか?
コンパイルオプションの最適化「デフォルト」と「実行速度」の違いを
教えてください。

漠然とした質問ですみません。

クラフトマン 2001/11/13(火) 12:00:48
>コンパイルオプションの最適化を「デフォルト」⇒「実行速度」に
>変更したら、エラーが出なくなりました。

をを??  逆じゃなくて?
大雑把に言うと、「デフォルト」というのは、ほとんど最適化をしなくて、
「実行速度」というのは、いろいろな最適化を行います。
つまり、「デフォルト」⇒「実行速度」とすると、最適化項目を追加する
ことになります。
だから、「実行速度」では動くけど、「デフォルト」では動かないという
のであれば、最適化の問題ではなくて、プログラムのバグである可能性が
高いですね。
(「デフォルト」では動くけど、「実行速度」では動かないというのであ
れば、最適化の副作用ということも考えられますが)

因みに、「デフォルト」と「実行速度」の違いは、最適化スイッチ/O2が付
くか(「実行速度」)、付かないか(「デフォルト」)だけです。
/O2をつけると、ループ最適化、自動レジスタ割り当て、インライン展開、
同一内容文字列の統合等を行います。
詳細は、MSDNで「最適化スイッチ」を調べてください。

Keiko 2001/11/14(水) 11:52:21
クラフトマンさんありがとうございました。

早速プログラムの見直しと「最適化スイッチ」を
調べてみます。

古いスレッドには追加発言できません。