MISRA C++:2023 Rule 21.6.2
Description
Rule Definition
Dynamic memory shall be managed automatically 1
Rationale
Dynamic memory requires management to avoid errors such as memory leaks, double frees,
        dangling pointers, and nonmatching allocation and deallocation functions. Attempting to
        manage dynamic memory without facilities such as std::make_unique or
          std::vector can be error prone. Do not use C-style memory allocation
        functions because they have limitations such as not being type safe and not using
        constructors or destructors.
Polyspace Implementation
Polyspace® reports a violation for any of these nonautomatic uses of dynamic memory management:
- The functions - malloc,- calloc,- realloc,- alligned_alloc, and- free
- Nonplacement forms of - newor- delete
- Member functions named - allocateor- deallocatethat are enclosed by namespace- std
- Uses of - std::unique_ptr::release
Troubleshooting
If you expect a rule violation but Polyspace does not report it, see Diagnose Why Coding Standard Violations Do Not Appear as Expected.
Examples
Check Information
| Group: Language support library | 
| Category: Required | 
Version History
Introduced in R2024b
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.