2016-08-24 31 views
-2

最近、私のアプリケーションをVisual Studio 2013からVisual Studio 2015に移行しました。DEBUGモードではすべて正常に動作しますが、RELEASEモードに切り替えると、 MyApp.exeの0x773F7FB2(ucrtbase.dll)の未処理の例外:無効なパラメータが無効なパラメータを致命的と見なす関数に渡されました "(私のアプリケーションではポインタへのポインタを渡した)。このエラーの原因は何でしょうか? 編集: 私がVS 2013を使用したとき、すべて正常に機能しました。それはVS 2015の問題ではありませんか?アプリケーションがDEBUGモードで正しく動作しますが、RELEASEモードでエラーが表示される

+1

コードを表示してください。デバッグモードの前/中で動作していたことは幸運かもしれません。 –

+1

おそらく未定義の動作です。プログラムのリリース版をデバッグしてください。 –

+2

通常は、どこかで初期化されていない変数を使用していますが、ほとんど何でもかまいません。デバッグビルドでは、初期化されていない変数を既知の値に設定しますが、リリースビルドでは無作為にします。 –

答えて

3

適切な回答が必要な場合は、コードを投稿してください。それがなければ私は私たちができることは推測です。

いずれにしても、リリースとデバッグモードの違いはです。ローカル変数は、デバッグビルドではゼロ初期化(またはデフォルト初期化)されることがよくありますが、標準では規定されていないため、リリースビルド(最適化されたもの)はコストがかかるので気にしません。それはちょうど1つの例です - それ以上はありますが、それは私がと推測しているものですはあなたを噛んでいます。

いずれにしても、あなたのプログラムには未定義の動作が含まれているようです。つまり、基本的には何かを信用できないことを意味します。の場合、最適化コンパイラはデバッグモードよりも多くを悪用しています。

未定義の動作を含む壊れたプログラムを書き込まないでください!それはですバイト。

関連する問題