&gt; Well, when you use a GC, you don&#x27;t have to figure out where to put the &quot;free&quot; calls.<p>That is precisely why I mentioned alloca(3C): it automatically frees the memory for you, if you do not want to do it yourself. From the Solaris &#x2F; illumos alloca(3C) manual page:<p><pre><code>  void *alloca(size_t size);

  The alloca() function allocates size bytes of space  in  the
  stack  frame  of  the  caller,  and returns a pointer to the
  allocated block. This temporary space is automatically freed
  when  the  caller  returns. If the allocated block is beyond
  the current stack limit, the  resulting  behavior  is  unde-
  fined.
</code></pre>
&gt; (have you ever tried writing a functional program with explicit malloc and free?)<p>I got my start on MOS 6502 &#x2F; MOS 6510 &#x2F; MC68000 assembler, so for me making malloc(3C) and free(3C) calls when programming in a functional style is completely normal. I have no problem with that whatsoever.