MISRA C:2012 Dir 4.12
Dynamic memory allocation shall not be used
Description
Rule Definition
Dynamic memory allocation shall not be used1 .
Rationale
Using dynamic memory allocation and deallocation routines provided by the Standard Library or third-party libraries can cause undefined behavior. For instance:
You use
free
to deallocate memory that you did not allocate withmalloc
,calloc
, orrealloc
.You use a pointer that points to a freed memory location.
You access allocated memory that has no value stored into it.
Dynamic memory allocation and deallocation routines from third-party libraries are likely to exhibit similar undefined behavior.
If you choose to use dynamic memory allocation and deallocation routines, ensure that your program behavior is predictable. For example, ensure that you safely handle allocation failure due to insufficient memory.
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: Code Design |
Category: Required |
AGC Category: Required |
Version History
Introduced in R2019b
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.