AUTOSAR C++14 Rule A18-5-1
Functions malloc, calloc, realloc and free shall not be used
説明
ルール定義
関数 malloc、calloc、realloc、free を使用してはなりません。
根拠
malloc、calloc、realloc、free を使用した C スタイル メモリの割り当ておよび割り当て解除はタイプ セーフではなく、オブジェクトを作成/削除するためにクラスのコンストラクター/デストラクターを呼び出すことはありません。
たとえば、malloc はメモリをオブジェクトに割り当て、割り当てられた void* 型のメモリを指すポインターを返します。その後、プログラムは、返されたポインターを意図したオブジェクト型と一致しない可能性のある別の型に暗黙的にキャストする場合があります。
このような割り当て関数および割り当て解除関数の使用は、次の場合に未定義の動作を引き起こす可能性があります。
freeを使用して、演算子newで割り当てられたメモリの割り当てを解除する。演算子
deleteを使用して、malloc、calloc、reallocで割り当てられたメモリの割り当てを解除する。
オーバーロードされた演算子 new および delete を使用して動的にメモリを割り当てたり割り当て解除したりした場合、または malloc と free の実装をカスタマイズした場合はルール違反とはなりません。
トラブルシューティング
ルール違反が想定されるものの、Polyspace® から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
| グループ: 18 言語サポート ライブラリ |
| カテゴリ: Required、Automated |
バージョン履歴
R2019b で導入