I have a question about Rule 18-4-1 "Dynamic heap memory allocation shall not be used.".
C++ already has a form of memory allocation for its automatic variables.
That is they are allocated on the stack.
I take for granted that this form of memory allocation is allowed by MISRA.
Would managing and allocating the heap space in a stack fashion address most concerns associated with rule 18-4-1?
For example, the call stack is also subject to out-of-storage runtime failure, i.e. stack overflow.
The call stack being used to store a host of values associated with function calls and its depth may be based on runtime values.
The only way to secure against this being to find the worst case your system allows and set the stack size accordingly.
If the heap space allocator was not subject to:
- Memory leaks
Order of allocation/deallocation
And the memory exhaustion case was handled in the same fashion as the call stack.
Meaning testing your system to find the worst case and ensuring that at least that amount is available.
Would this type of dynamic heap memory allocation be compliant with the intent of rule 18-4-1?