Charles Wilson wrote:

The reason many real-time systems disallow use of the heap is because it
is well-known that heap management does not have a bounded-time
implementation.  Usually during free()/delete, typical heap management
code often tries to coalesce freed blocks, or perform various other
book-keeping. The length of time this takes is dependent on the usage
pattern of the process.  There are approaches to minimize the
'unboundedness' but that's like attempting to be "a little bit pregnant".


In a properly designed embedded system, the finish-time-unpredictable portion of free()/delete/delete[] is deferred to a low priority runtime context, with a queue of requests. Then the heap is available to time-critical contexts. The system design must ensure that activity bursts are handled: the compiler can not assist this aspect.

Otherwise, yes, there are embedded systems where a heap is absent.

Anyway, such requirements appears out of scope for GCC development.

Regards,

--
- Thierry Moreau

CONNOTECH Experts-conseils inc.
9130 Place de Montgolfier
Montreal, QC, Canada H2M 2A1

Tel. +1-514-385-5691

Reply via email to