About Rule 18-4-1 "Dynamic heap memory allocation shall not be used."

Moderators: david ward, misra cpp

[email protected]
Posts: 2
Joined: Thu Nov 02, 2017 5:49 pm
Company: NXP Semiconductors

About Rule 18-4-1 "Dynamic heap memory allocation shall not be used."

Postby [email protected] » Mon Mar 25, 2019 6:38 pm

Hi,

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
    Non-deterministic behavior
      Fragmentation
      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?


Best regards.

Sebastien Ashby

misra cpp
Posts: 145
Joined: Mon Jun 02, 2008 1:55 pm
Company: MISRA

Re: About Rule 18-4-1 "Dynamic heap memory allocation shall not be used."

Postby misra cpp » Wed Apr 10, 2019 2:57 pm

We would agree that creating large amounts of data on the stack has many of the same problems as creating it on the heap.

The rules were written when most target applications had well defined and static memory requirements, making dynamic allocation unnecessary.

However, this approach is being re-examined
Posted by and on behalf of
the MISRA C++ Working Group


Return to “6.18 Language support library (C++)”

Who is online

Users browsing this forum: No registered users and 0 guests