MISRAC2012-Dir-4.13_d
Synopsis
(Advisory) Functions which are designed to provide operations on a resource should be called in an appropriate sequence. Memory is being accessed after it has been deallocated. The application might appear to run normally, but the operation is illegal. The most likely result is a crash, but the application might keep running with erroneous or corrupt data.
Enabled by default
No
Severity/Certainty
High/High

Full description
A pointer is used after it has been freed. This check is identical to MISRAC2012-Rule-1.3_o, SEC-BUFFER-use-after-free-all, CERT-MEM30-C_a, MEM-use-free-all.
Coding standards
- CERT MEM30-C
Do not access freed memory
- MISRA C:2012 Dir-4.13
(Advisory) Functions which are designed to provide operations on a resource should be called in an appropriate sequence
Code examples
The following code example fails the check and will give a warning:
#include <stdlib.h>
void example(void) {
int *x;
x = (int *)malloc(sizeof(int));
free(x);
*x++; //x is dereferenced after it is freed
}
The following code example passes the check and will not give a warning about this issue:
#include <stdlib.h>
void example(void) {
int *x;
x = (int *)malloc(sizeof(int));
free(x);
x = (int *)malloc(sizeof(int));
*x++; //OK - x is reallocated
}