AUTOSAR C++14 Rule A18-5-3
The form of delete operator shall match the form of new operator used to allocate the memory
説明
ルール定義
delete 演算子の形式は、メモリを割り当てるために使用した new 演算子の形式に一致するものとします。
根拠
delete演算子はヒープに割り当てられたメモリのブロックを解放します。以前に割り当てていないヒープ上の位置にアクセスしようとすると、セグメンテーション違反が発生する可能性があります。newの配列表記で以前に割り当てたポインターに対して、delete演算子の単一オブジェクト表記を使用すると、動作が未定義になります。
この問題により、他のコーディング エラーが明らかになる場合があります。たとえば、delete 演算子または前の new 演算子を別のポインターに対して使用する必要があった可能性があります。
Polyspace 実装
チェッカーは以下の場合にフラグを設定します。
delete演算子を使用してメモリのブロックを解放したが、そのメモリが以前にnew演算子を用いて割り当てられていなかった。単一オブジェクト表記で
delete演算子を使用してメモリのブロックを解放したが、そのメモリが以前にnew演算子を用いて配列として割り当てられていた。
この欠陥は C++ ソース ファイルに対してのみ適用されます。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 言語サポート ライブラリ |
| カテゴリ: Required、Automated |
バージョン履歴
R2019a で導入