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