インテル® 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_strcpystrcpy のラッパーです。