<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">What’s often forgotten is that NASA is a huge organisation with projects ranging from rapid prototypes through to decade old deep space missions. It’s not really possible to say NASA do this or that, it’s all context dependent. <div>I don’t use heap allocation at all in critical embedded code. One place it could be appropriate is during startup but if you can make all those static you know at compile time if it doesn’t fit. The more compelling scenario is if you need to use a higher level language or 3rd party libraries. Sometimes the cost of re-implementing is just not worth it and careful partitioning (like a good car’s safety critical subsystems and it’s multimedia bus) is a better solution. <br><br><div dir="ltr">Sent from my iPhone</div><div dir="ltr"><br><blockquote type="cite">On 29/08/2023, at 2:26 AM, Charles Manning <cdhmanning@gmail.com> wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div>As a semi-regular supplier of code to NASA , I can assure you that this is aspiration. not reality.</div><div><br></div><div>I think there is a middle path with heap usage which seems to be what most organisations like NASA and Boeing etc really strive for and that is to only use the heap for once-off allocations at start up. This allows the creation of data structures at start up that were not known at compile time.</div><div>Some RTOSs have a nifty feature which allows malloc() to be turned off once your program is up and running.</div><div><br></div><div>It is a bit easy to get draconian with rules. For example, recursion is often the simplest and cleanest way to handle a problem and concerning a recursive function to be non-recursive can often be hard and buggy - making the code challenging to understand. Like with looping code, one solution is to put an upper bound on recursive depth by passing a depth argument:<br><br></div><div>int recursive(int x, int depth)</div><div>{</div><div>  if (depth < 1)</div><div>     return -1; // ran out of depth<br></div><div> else {</div><div>     depth = depth -1;</div><div>    return recursive(...,depth);</div><div> }<br></div><div>}<br></div><div><br></div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Aug 29, 2023 at 6:45 AM Mark Atherton <<a href="mailto:markaren1@xtra.co.nz">markaren1@xtra.co.nz</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><a href="https://www.youtube.com/watch?v=GWYhtksrmhE" rel="noreferrer" target="_blank">https://www.youtube.com/watch?v=GWYhtksrmhE</a><br>
<br>
Finally someone who agrees with me that the heap is a heap-bad-thing :)<br>
<br>
Huge piles of common sense, and observations about static analysis.<br>
<br>
-Mark<br>
<br>
<hiding under bench><br>
<br>
<br>
<br>
_______________________________________________<br>
Chchrobotics mailing list <a href="mailto:Chchrobotics@lists.ourshack.com" target="_blank">Chchrobotics@lists.ourshack.com</a><br>
<a href="https://lists.ourshack.com/mailman/listinfo/chchrobotics" rel="noreferrer" target="_blank">https://lists.ourshack.com/mailman/listinfo/chchrobotics</a><br>
Mail Archives: <a href="http://lists.ourshack.com/pipermail/chchrobotics/" rel="noreferrer" target="_blank">http://lists.ourshack.com/pipermail/chchrobotics/</a><br>
Meetings usually 3rd Monday each month. See <a href="http://kiwibots.org" rel="noreferrer" target="_blank">http://kiwibots.org</a> for venue, directions and dates.<br>
When replying, please edit your Subject line to reflect new subjects.</blockquote></div>
<span>_______________________________________________</span><br><span>Chchrobotics mailing list Chchrobotics@lists.ourshack.com</span><br><span>https://lists.ourshack.com/mailman/listinfo/chchrobotics</span><br><span>Mail Archives: http://lists.ourshack.com/pipermail/chchrobotics/</span><br><span>Meetings usually 3rd Monday each month. See http://kiwibots.org for venue, directions and dates.</span><br><span>When replying, please edit your Subject line to reflect new subjects.</span></div></blockquote></div></body></html>