Visual Studio での std::vector の Operator[] の境界チェック動作
Visual Studio 2008 では、std::vector の Operator[]デフォルトで境界チェック動作を示します。これは、operator[] を使用してベクトルの定義範囲外の要素にアクセスすると、std::out_of_range 例外が発生することを意味します。ただし、この動作はデバッグ ビルドとリリース ビルドの両方でデフォルトで有効になっています。
投稿者は、パフォーマンスを最適化するためにリリース ビルドで境界チェックを無効にすることに関心を示しました。幸いなことに、Visual Studio 2010 では、リリース ビルドでは境界チェックを無効にし、デバッグ ビルドでは境界チェックをデフォルトで維持することで、この問題に対処する予定です。
この変更は、マクロ _ITERATOR_DEBUG_LEVEL (以前の _SECURE_SCL) によって制御されます。境界チェックを無効にするには 0 に設定します。これにより、開発者は、デバッグ ビルドでは Operator[] の境界チェックを選択的に有効にし、リリース ビルドではそれを抑制してパフォーマンスを向上させることができます。
この変更を実装することにより、Visual Studio 2010 では、std の境界チェック動作をより柔軟に管理できるようになります。 ::vector の演算子[]。開発者は、特定のアプリケーション要件に基づいて、精度 (すべてのビルドで境界チェックを使用) またはパフォーマンス (リリース ビルドで境界チェックを無効に) を優先することを選択できるようになりました。
以上がVisual Studio の std::vector の Operator[] はリリース ビルドで境界チェックを実行しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。