-1

私が書いてUbuntuで問題なく実行したC++プロジェクトは、Windowsで実行すると「ベクトル添字が範囲外です」という例外が返されます。Windows 7 と Visual C++ 2008 Express を使用しています。

それが誰かにとって意味があることを願っています。

4

2 に答える 2

1

あなたのコードには、ほぼ確実に未定義の動作が含まれています。このような場合、実装はほとんど何でも自由に行うことができます。gcc は基本的に問題を無視していたようで、明らかではありませんでした。VC++ は、問題を見つけて通知するのに十分な自己監視機能をコードに組み込みました。

次のステップはほとんどあなた次第です。コード内の問題を見つけて修正します。残念ながら、コードを投稿していないため、何をすべきか、またはどのように行うべきかについて、これ以上詳細なアドバイスを提供することは基本的に不可能です。私が思いつく唯一のヒントは、VC++ のデバッガーには優れたスタック トレース機能があることです。そのため、デバッガーでコードを実行して失敗した場合、スタックをさかのぼって呼び出したコードを見つけるのは非常に簡単です。問題が検出された関数 (関数を呼び出した関数など)。

于 2013-01-08T01:27:08.983 に答える
1

Microsoft が出荷する STL のバージョンには、チェックされた iteratorsが付属しており、デバッグ モードで実行すると、ベクトル インデックスが範囲内にあることが保証されます。デフォルトでは、GCC ではそのようなチェックは行われません。

于 2013-01-08T00:26:40.573 に答える