 
                            ...
Casting pointers or references to incomplete classes can result in bad addresses. Deleting a pointer to an incomplete class results in undefined behavior if the class has a nontrivial destructor. Doing so can cause program termination, a runtime signal, or resource leaks.
| Rule | Severity | Likelihood | Detectable | RepairableRemediation Cost | Priority | Level | 
|---|---|---|---|---|---|---|
| EXP57-CPP | Medium | Unlikely | Yes | MediumNo | P4 | L3 | 
Automated Detection
| Tool | Version | Checker | Description | ||||||
|---|---|---|---|---|---|---|---|---|---|
| Astrée | 
 | delete-with-incomplete-type | |||||||
| Coverity | 6.5 | DELETE_VOID | Fully implemented | ||||||
| Clang | 
 | -Wdelete-incomplete | |||||||
| CodeSonar | 
 | LANG.CAST.PC.INC | Conversion: pointer to incomplete delete of incomplete class | ||||||
| Helix QAC | 
 | C++3112 | |||||||
| Klocwork | 
 | CERT.EXPR.DELETE_PTR.INCOMPLETE_TYPE | |||||||
| LDRA tool suite | 
 | 169 S, 554 S  | Enhanced Enforcement | ||||||
| Parasoft C/C++test | 
 | CERT_CPP-EXP57-a | Do not delete objects with incomplete class at the point of deletion | ||||||
| Parasoft Insure++ | Runtime detection | ||||||||
| Polyspace Bug Finder | 
 | CERT C++: EXP57-CPP | Checks for conversion or deletion of incomplete class pointer | ||||||
| RuleChecker | 
 | delete-with-incomplete-type | 
...