void ポインターが削除されています
オブジェクトを指す void* ポインターに対し delete を実行
説明
この欠陥は、delete 演算子が void* ポインターに作用した場合に発生します。
リスク
C++ 規格によると、void* ポインターの削除は未定義です。
オブジェクトがタイプ MyClass であり、delete 演算子がそのオブジェクトを指す void* ポインターで実行される場合、MyClass デストラクターは呼び出されません。
デストラクターに、リソースの解放やカウンターの値を減らすなどのクリーンアップ操作が含まれている場合、その操作は実行されません。
修正方法
void* ポインターを適切な型にキャストします。delete 操作をキャストの結果に対して実行します。
たとえば、void* ポインターが MyClass オブジェクトを指す場合は、ポインターを MyClass* にキャストします。
例
結果情報
| グループ: 適切な手法 |
| 言語: C++ |
| 既定値: オフ |
コマンド ライン構文: DELETE_OF_VOID_PTR |
| 影響度: Low |
バージョン履歴
R2015b で導入