このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
キャストに割り当てられた誤ったオブジェクト サイズ
割り当てられたメモリが変換先のポインターに一致しない
説明
この欠陥は、ポインターの変換時にポインターのアドレスが整列していない場合に発生します。ポインターを異なるポインター型に変換する際に、割り当てられたメモリのサイズは変換先のポインターのサイズの倍数でなければなりません。
リスク
整列していないポインターをデリファレンスすると、未定義の動作が発生し、プログラムがクラッシュする可能性があります。
修正方法
ポインター 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 で導入