インテル® C++ コンパイラー 18.0 デベロッパー・ガイドおよびリファレンス
ポインターチェッカーは、macOS* システムではサポートされていません。
ポインターチェッカーは、ポインターを使用してメモリー操作を行う C ランタイム・ライブラリー関数をチェックします。ランタイム・ライブラリーを置換するか、適切なポインター・チェック・メカニズムでラップする関数のライブラリーを使用します。
malloc() 関数やさまざまな C++ new 関数のようにメモリーを割り当てる関数の場合、ラッパー関数はメモリー・アロケーターによって返されたポインターの範囲情報を作成します。
memcpy() 関数のようにメモリーをコピーする関数の場合、メモリーアドレスにポインターと (ポインターに関連付けられている) 範囲情報が含まれます。ラッパー関数は範囲外アクセスをチェックして、コピーされるメモリーに関連付けられている範囲もコピーされることを保証します。
ポインターチェッカーの C ランタイム関数ラッパーは libchkpwrap ライブラリーにあります。C ランタイムルーチンがラップされているかどうかを判断するには、ライブラリーのエントリーポイントを確認します。例えば、次のコマンドを実行してエントリーポイントのリストを取得できます。
例 |
---|
// Linux* % nm libchkpwrap.a | egrep 'T __chkp_' |
// Windows* (x86) dumpbin /symbols libchkpwrap.lib | egrep 'SECT.*External.* [_]*__chkp_' |
返されるエントリーポイントのリストからラッパーが分かります。例えば、__chkp_strcpy は strcpy のラッパーです。