デバッグ目的で std::vector の [] 演算子で境界チェックを維持する
コードを Borland C から Visual にシームレスに移行するという探求においてStudio さん、std::vector の動作に不一致が発生しました。デフォルトでは、リリース ビルドであっても、Visual Studio は at() 関数と [] 演算子の両方に対して境界チェックを実行します。ただし、エラー検出を向上させるために、デバッグ モードでのみ境界チェックを選択的に有効にしたいと考えています。
幸いなことに、Visual Studio では、_SECURE_SCL というマクロを使用してこの動作をカスタマイズできます。 _SECURE_SCL を 0 に設定すると、[] 演算子をデバッグ モードに保持したまま、リリース モードでの境界チェックを無効にすることができます。これにより、必要な機能が提供され、境界外アクセスによって std::out_of_range 例外が確実にトリガーされ、バグの特定が迅速化されます。
今後の Visual Studio 2010 リリースでは、境界チェックが行われることに注意することが重要です。リリース ビルドではデフォルトで無効になる予定ですが、デバッグ ビルドでは維持されます。この動作を制御するために、マクロの名前が _ITERATOR_DEBUG_LEVEL に変更され、ビルド構成ごとに必要な範囲チェックのレベルを指定できるようになります。
以上がVisual Studio でデバッグを目的として `std::vector` の [] 演算子で境界チェックを維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。