メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

未初期化変数

ローカル変数以外の変数が読み取り前に初期化されない

説明

このチェックは、ローカルではない変数 (グローバル変数または静的変数) を読み取る際に行われます。これによって、読み取られる変数が初期化されているかどうかを判別します。

既定では、Polyspace® ではグローバル変数は初期化されていると見なします。検証では、この既定の初期化をしない場合にのみグローバル変数をチェックします。グローバル変数の初期化に関する Code Prover の仮定も参照してください。

複素数データ型の初期化の他の例については、ローカル変数に対する同等のチェッカーである未初期化ローカル変数を参照してください。

すべて展開する

int globVar;
int getVal();

void main() {
 int val = getVal();
 if(val>=0 && val<= 100)
   globVar += val;
}

この例において、globVar はインクリメントされる際に初期値をもっていません。したがって、[未初期化変数] チェックはレッド エラーを生成します。

例では、グローバル変数の既定の初期化をしないようにするオプションを使用します。

修正 — 使用の前にグローバル変数を初期化

1 つの修正方法として、使用する前にグローバル変数 globVar を初期化するとします。

int globVar;
int getVal();

void main() {
 int val = getVal();
 globVar = 0;
 if(val>=0 && val<= 100)
   globVar += val;
}

チェック情報

グループ: データ フロー
言語: C | C++
頭字語: NIV