インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス

ポインターチェッカーの概要

ポインターチェッカーは、macOS* システムではサポートされていません。

この機能を利用するには、別の製品をインストールする必要があります。詳細は、「機能要件」を参照してください。

ポインターチェッカーは、アプリケーションでバッファー・オーバーランの検出を支援するデバッグ機能です。ポインターによるメモリーアクセスの範囲チェックを行い、ポインターチェッカーが有効なコード範囲外のアクセスを認識します。ポインターチェッカーは、ダングリング・ポインター (解放されたメモリーを指すポインター) を検出することもできます。この検出が有効な場合、間接アクセスでダングリング・ポインターを使用しても範囲外エラーになります。

C および C++ 言語は、ポインターのメモリーアクセスのセマンティクスを定義します。ただし、それでも多くのアプリケーションは範囲外のメモリーアクセスを行うことがあります。これらのアクセスは検出できないため、データが破壊されたり、脆弱性を利用した悪意のある攻撃を受ける可能性が高くなります。ポインターチェッカーは、ポインターによるすべてのメモリーアクセスを完全にチェックして、メモリーが破壊される前に範囲外のメモリーアクセスをキャッチします。ポインターチェッカーが有効なコードをコンパイルすると、ポインターチェッカーは範囲外のメモリーアクセスを識別してレポートします。

ポインターチェッカーは、アプリケーションのテストとデバッグに使用するように設計されています。ポインターチェッカーを有効にするとプログラムのオーバーヘッド(サイズや実行時間)が増えるため、リリース版ではポインターチェッカーを無効にしたプログラムを配布します。

アプリケーションには、ポインターチェッカーが有効なコードとそうでないコードの両方を含めることができます。ポインターチェッカーはチェック中に関数のデータ構造レイアウトを変更しないため、コードの共存が可能です。

関連情報