...
MEM31-C-EX1: Allocated memory does not need to be freed if it is assigned to a pointer with static storage duration whose lifetime is the entire execution of a programincludes program termination. The following code example illustrates a pointer that stores the return value from malloc()
in a static
variable:
...
Tool | Version | Checker | Description | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Astrée |
| Supported, but no explicit checker | ||||||||||||||||||
Axivion Bauhaus Suite |
| CertC-MEM31 | Can detect dynamically allocated resources that are not freed | |||||||||||||||||
CodeSonar |
| ALLOC.LEAK | Leak | |||||||||||||||||
Compass/ROSE | ||||||||||||||||||||
| RESOURCE_LEAK ALLOC_FREE_MISMATCH | Finds resource leaks from variables that go out of scope while owning a resource | ||||||||||||||||||
Cppcheck |
| leakReturnValNotUsed | Doesn't use return value of memory allocation function | |||||||||||||||||
Helix QAC |
| DF2706, DF2707, DF2708 C++3337, C++3338 | ||||||||||||||||||
Klocwork |
| MLKCL.FFM.MIGHTASSIGN MLKCL.FFM.MUSTCOPY MLKCL.RETSHALLOW.MUSTASSIGN MLK.RETCL.SHALLOW.COPY FMM.MIGHT FMM.MUST | ||||||||||||||||||
LDRA tool suite |
| 50 D | Partially implemented | |||||||||||||||||
Parasoft C/C++test |
| CERT_C-MEM31-a | Ensure resources are freed | |||||||||||||||||
Parasoft Insure++ | Runtime analysis | |||||||||||||||||||
PC-lint Plus |
| 429 | Fully supported | |||||||||||||||||
Polyspace Bug Finder |
| CERT C: Rule MEM31-C | Checks for memory leak (rule fully covered) | PRQA QA|||||||||||||||||
PVS- | CStudio |
| PRQA QA
| C_vPRQA QA-C_v | 2706, 2707, 2708 | PRQA QA-C++ | ||||||||||||||
Include Page | cplusplus:PRQA QA-C++_V | cplusplus:PRQA QA-C++_V | 3337, 3338
| V773 | ||||||||||||||||
SonarQube C/C++ Plugin |
| S3584 | ||||||||||||||||||
Splint |
| |||||||||||||||||||
TrustInSoft Analyzer |
| malloc | Exhaustively verified. |
...