ポインターのスケーリングが無効です
ポインター演算での暗黙的なスケーリングは無視される場合がある
説明
この欠陥は、Polyspace® Bug Finder™ によって、ポインター演算での暗黙的なスケーリングが無視されているとみなされた場合に発生します。
たとえば、欠陥は次のような状況で発生します。
| 状態 | リスク | 考えられる解決方法 |
|---|---|---|
ポインターでの算術演算で sizeof 演算子を使用する。 |
ポインター演算は既に、指されている変数のデータ型のサイズによって暗黙的にスケーリングされている。そのため、ポインター演算で | ポインター演算で sizeof 演算子を使用しない。 |
| ポインターに対し算術演算を実行してから、キャストを適用する。 | ポインター演算は暗黙的にスケーリングされている。この暗黙的なスケーリングを考慮せずにポインター演算の結果をキャストすると、想定外の結果が生成される。 | キャストをポインター演算の前に適用する。 |
修正方法
修正方法は欠陥の根本原因によって異なります。上の表に記載されている修正と以下の修正付きのコード例を参照してください。
問題を修正しない場合は、改めてレビューされないように結果またはコードにコメントを追加します。詳細は、以下を参照してください。
Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処 (Polyspace ユーザー インターフェイスで結果をレビューする場合)。
Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access) (Web ブラウザーで結果をレビューする場合)。
コードへの注釈付けと既知の結果または許容可能な結果の非表示 (IDE で結果をレビューする場合)
例
結果情報
| グループ: プログラミング |
| 言語: C | C++ |
| 既定値: 手書きコードはオン、生成コードはオフ |
コマンド ライン構文: BAD_PTR_SCALING |
| 影響度: Medium |
バージョン履歴
R2015b で導入