...
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" |
...