AUTOSAR C++14 Rule A18-5-11
"operator new" and "operator delete" shall be defined together
説明
ルール定義
"operator new" and "operator delete" shall be defined together.
根拠
通常、空きストアのメモリの割り当てに加えて何らかのブックキーピングを実行するために operator new をオーバーロードします。対応する operator delete をオーバーロードしていない場合は、メモリの割り当てを解除するときに対応するブックキーピングを省略した可能性があります。
この欠陥もコーディング エラーを示す可能性があります。たとえば、operator new[] の配置形式をオーバーロードしたとします。
void *operator new[](std::size_t count, void *ptr);
operator delete[] の非配置形式を使用してしまう場合があります。void operator delete[](void *ptr);
void operator delete[](void *ptr, void *p );
operator new をオーバーロードする際、対応する operator delete を同じスコープでオーバーロードしていることを確認します (その逆も同様)。operator new に対応する operator delete を見つける方法については、operator new および operator delete のリファレンス ページを参照してください。
Polyspace 実装
ルール チェッカーは、operator new をオーバーロードしたが対応する operator delete をオーバーロードしていない場合 (またはその逆の場合) に違反を報告します。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 言語サポート ライブラリ |
| カテゴリ: Required、Automated |