MISRA C:2012 Rule 21.3
The memory allocation and deallocation functions of <stdlib.h>
shall not be used
Description
Rule Definition
The memory allocation and deallocation functions of
<stdlib.h>
shall not be used1
.
Rationale
Using memory allocation and deallocation routines can cause undefined behavior. For instance:
You free memory that you had not allocated dynamically.
You use a pointer that points to a freed memory location.
Polyspace Implementation
The checker flags uses of the calloc
,
malloc
, realloc
,
aligned_alloc
and free
functions.
If you define macros with the same names as these dynamic heap memory allocation functions, and you expand the macros in the code, this rule is violated. It is assumed that rule 21.2 is not violated.
Additional Message in Report
The macro <name> shall not be used.
Identifier XX should not be used.
Troubleshooting
If you expect a rule violation but do not see it, refer to Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
Group: Standard Libraries |
Category: Required |
AGC Category: Required |
Version History
Introduced in R2014b
See Also
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace® Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.