未初期化値へのポインターが定数ポインターに変換
定数へのポインターに値を含まないアドレスが割り当てられている
説明
この欠陥は、値が設定されていないアドレスが定数へのポインター (const int*、const char* など) に割り当てられた場合に発生します。
次に例を示します。
int x; const int * ptr = &x;
リスク
定数へのポインターは、プログラム内で後で変更されない値を格納します。未初期化変数のアドレスをポインターに割り当てると、このポインターはプログラムの残りに対するゴミ値をもつアドレスを指します。
修正方法
定数へのポインターに変数のアドレスを割り当てる前に、その変数を初期化します。
チェッカーの拡張
特定のシステム入力値の場合にのみ const ポインターが正しく初期化されない場合は、欠陥を引き起こす可能性のある入力値の組み合わせの 1 つと見なすことができます。特定のシステム入力値から欠陥を見つけるための Bug Finder チェッカーの拡張を参照してください。
例
結果情報
| グループ: データ フロー |
| 言語: C | C++ |
| 既定値: オフ |
コマンド ライン構文: NON_INIT_PTR_CONV |
| 影響度: Medium |
バージョン履歴
R2013b で導入