C-RUN ランタイム解析のオプション
What do you want to do?
Learn about:
Learn how to:
C-RUN ランタイム チェック オプションに関する参照情報については、下記を参照してください。

[C-RUN ランタイム解析]オプションにより、実行時に実行するチェックを決定します。

有効化
ランタイム解析を有効にします。
ヒープチェックの有効化
ヒープチェックを使用して、ヒープの使用に関するエラーを検出します。
境界チェックを有効化
配列およびその他オブジェクトの境界の外にあるアクセスをチェックします。使用可能なチェック :
- ポインタ変数の境界をチェック
コンパイラでポインタの境界を追跡するコードを追加します。ポインタの境界をチェックするには、[アクセスをチェック]を有効にしてから有効なコードが有効でないコードとどのように互いに作用するか決定してください。
アクセスをチェック
ポインタ経由のアクセスがあるかどうかチェックするコードを挿入します。
C-RUN が有効でないコードから呼び出し可能な関数を生成
[ポインタ変数の境界をチェック]が有効な場合、ポインタを含む型を返したり受け入れる関数はすべて、ポインタ境界を返したり受け入れるように修正されます。このオプションを使用して、そのような関数(未チェックのコードから呼び出し可能です)ごとに追加のエントリを生成します。
C-RUN が有効でない関数からのポインタをチェック
[ポインタ変数の境界をチェック]が有効な場合、境界チェックで有効でない関数から派生するポインタには、デフォルトでグローバルに許容される境界情報が割り当てられます。このオプションを使用して、このようなポインタを識別します。これらのポインタを介したすべてのアクセスで、エラーが発生します。これによって、グローバルに許容される境界情報を有効な情報に手動で置き換えることができます(__as_get_base、__as_get_bound、__as_make_boundsを参照)。
このオプションを使用せず、有効な境界情報を指定しなければ、これらのポインタを介したアクセスではエラーが発生しないため、実行時の動作が正しくないままになる可能性があります。
C-RUN が有効でないメモリからのポインタをチェック
[ポインタ変数の境界をチェック]が有効な場合、メモリからポインタがロードされるたびに、その境界がグローバル境界テーブルで検索されます。このポインタのエントリがテーブルに見つからない場合は通常、ポインタが有効でないコードにより作成されたためで、グローバルに許容される境界が設定されます。このオプションを使用して、このようなポインタを識別します。これらのポインタを介したすべてのアクセスで、エラーが発生します。これによって、グローバルに許容される境界情報を有効な情報に手動で置き換えることができます(__as_get_base、__as_get_bound、__as_make_boundsを参照)。
このオプションを使用せず、有効な境界情報を指定しなければ、これらのポインタを介したアクセスではエラーが発生しないため、実行時の動作が正しくないままになる可能性があります。
エントリ数
境界チェックシステムは、別のテーブルを使用してメモリ内のポインタの境界を追跡します。このオプションを使用して、同時に追跡可能なこうした境界の数を設定します。テーブルは、ポインタあたり約 50 バイトを使用します。
チェックを挿入する対象
チェックを挿入する対象 :
- 整数オーバフロー
整数演算に符号付きオーバフローがあるかチェックします。整数演算に符号なしのオーバフローがあるかもチェックする場合は[符号なしを含める]を使用して下さい。
- 整数変換
暗黙的な整数変換によって値が変更されているかチェックします。明示的なキャストがあるかどうかもチェックするには、[明示的なキャストを含める]を使用してください。
- 整数シフトオーバフロー
シフト演算にオーバフローがあるかチェックします。シフト演算に符号なしのオーバフローがあるかどうかもチェックするには、[符号なしシフトを含める]を使用してください。
- ゼロによる除算
ゼロによる除算があるかチェックします。
- 未処理の switch case
switch文に未処理のケースがあるかチェックします。