...
MEM31-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 program. The following code example illustrates a pointer that stores the return value from malloc()
in a static
variable:
Code Block | ||||
---|---|---|---|---|
| ||||
#include <stdlib.h> enum { BUFFER_SIZE = 32 }; int f(void) { static char *text_buffer = NULL; if (text_buffer == NULL) { text_buffer = (char *)malloc(BUFFER_SIZE); if (text_buffer == NULL) { return -1; } } return 0; } |
...
Tool | Version | Checker | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
CodeSonar |
| ALLOC.LEAK | Leak | ||||||
Compass/ROSE | |||||||||
| RESOURCE_LEAK | Finds resource leaks from variables that go out of scope while owning a resource | |||||||
Cppcheck |
| leakReturnValNotUsed | Return value of memory allocation function is not used. | ||||||
5.0 | |||||||||
| MLK | ||||||||
| 484 S | Fully implemented | |||||||
|
...
Related Guidelines
CERT C++ Secure Coding Standard | VOID MEM31-CPP. Free dynamically allocated memory exactly once |
ISO/IEC TR 24772:2013 | Memory Leak [XYL] |
ISO/IEC TS 17961 | Failing to close files or free dynamic memory when they are no longer needed [fileclose] |
MITRE CWE | CWE-401, Improper Release of Memory Before Removing Last Reference ("Memory Leak") |
...
[ISO/IEC 9899:2011] | Subclause 7.22.3, "Memory Management Functions" |
...