キャストに割り当てられた誤ったオブジェクト サイズ
割り当てられたメモリが変換先のポインターに一致しない
説明
この欠陥は、ポインターの変換時にポインターのアドレスが整列していない場合に発生します。ポインターを異なるポインター型に変換する際に、割り当てられたメモリのサイズは変換先のポインターのサイズの倍数でなければなりません。
リスク
整列していないポインターをデリファレンスすると、未定義の動作が発生し、プログラムがクラッシュする可能性があります。
修正方法
ポインター ptr1 を ptr2 に変換するとします。ptr1 が N バイトのバッファーを指し、ptr2 が ポインターで、type *sizeof( が type)n バイトの場合、N が n の整数倍であることを確認します。
以下の修正例を参照してください。
問題を修正しない場合は、改めてレビューされないように結果またはコードにコメントを追加します。詳細は、以下を参照してください。
Polyspace ユーザー インターフェイスでのバグ修正または正当化による結果への対処 (Polyspace ユーザー インターフェイスで結果をレビューする場合)。
Polyspace Access でのバグ修正または正当化による結果への対処 (Polyspace Access) (Web ブラウザーで結果をレビューする場合)。
コードへの注釈付けと既知の結果または許容可能な結果の非表示 (IDE で結果をレビューする場合)
例
結果情報
| グループ: 静的メモリ |
| 言語: C | C++ |
| 既定値: オフ |
コマンド ライン構文: OBJECT_SIZE_MISMATCH |
| 影響度: High |
バージョン履歴
R2013b で導入