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

check-pointers-mpx、Qcheck-pointers-mpx

インテル® Memory Protection Extensions (インテル® MPX) 対応のプロセッサーにおいて、コンパイラーがポインターによるメモリーアクセスの範囲をチェックするかどうかを指定します。

アーキテクチャーの制限

インテル® グラフィックス・テクノロジーをターゲットとするインテル® 64 アーキテクチャー、または IA-32 アーキテクチャーで実行するインテル® グラフィックス・テクノロジーをターゲットとする場合は利用できません。

構文

Linux*:

-check-pointers-mpx=keyword

macOS*:

なし

Windows*:

/Qcheck-pointers-mpx:keyword

引数

keyword

ポインターチェックの種類を指定します。設定可能な値は以下のとおりです。

none

範囲のチェックを無効にします。これはデフォルトです。

rw

ポインターによる読み取りと書き込みの範囲をチェックします。

write

ポインターによる書き込みのみ範囲をチェックします。

デフォルト

-check-pointers-mpx=none または /Qcheck-pointers-mpx:none

インテル® MPX 対応のプロセッサーにおいてポインターによるメモリーアクセスの範囲をチェックしません。

説明

このオプションは、インテル® MPX 対応のプロセッサーにおいて、コンパイラーがポインターによるメモリーアクセスの範囲をチェックするかどうかを指定します。ポインターによる間接アクセスと配列へのアクセスのチェックを有効にします。

アクセスが安全であると判断できる場合は、チェックが省略されることがあります。

[Q]check-pointers オプションと [Q]check-pointers-mpx オプションを一緒に指定すると、[Q]check-pointers-mpx オプションが優先されます。

[Q]check-pointers-mpx オプションを指定する場合、[Q]check-pointers-dangling オプションを一緒に指定することはできません。

この機能を利用するには、対応ハードウェア、OS、ライブラリー・サポートが必要です。インテル® MPX の境界例外は、NULL ポインター例外の処理と同様に、OS およびランタイム・ライブラリーによって処理されるハードウェア例外です。ポインターチェッカーの詳細レポートとレポート制御関数は、OS の例外処理をオーバーライドする必要があるため、インテル® MPX では有効になりません。

詳細は、『Intel® Memory Protection Extensions Enabling Guide』(http://intel.ly/1QlUdjN (英語)) を参照してください。

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

IDE オプション

Visual Studio*: [Code Generation (コード生成)] > [Check Pointers (ポインターのチェック)]

Eclipse*: [Code Generation (コード生成)] > [Check Pointers (ポインターのチェック)]

Xcode*: なし

代替オプション

なし

関連情報