<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>alloca() "allocates" memory on the stack. This is done by simply
      incrementing the stack pointer. So it's extremely fast and - more
      importantly - equally fast for all sizes.<br>
    </p>
    <p>malloc(), on the other hand, actually uses the system memory
      allocator which can take arbitrarily long and might even block!<br>
    </p>
    <p>Generally, you should avoid using any malloc() in real-time code
      paths. Instead, pre-allocate temporary buffers (e.g. in the "dsp"
      method) or allocate on the stack (but note the caveats mentioned
      in the other mails).</p>
    <p>Christof<br>
    </p>
    <div class="moz-cite-prefix">On 04.12.2020 03:28, Alexandre Torres
      Porres wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAEAsFmjD38FVQvOzikDfddkN0CGmN=p-Dp4LKNfXris1T9eQZA@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">I'm using getbytes and freebytes for now, any
        disadvantages over alloca?
        <div><br>
        </div>
        <div>thanks!</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">Em qui., 3 de dez. de 2020 às
          20:59, David Rush <<a href="mailto:kumoyuki@gmail.com"
            moz-do-not-send="true">kumoyuki@gmail.com</a>> escreveu:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px
          0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div dir="ltr">
            <div dir="ltr">On Thu, 3 Dec 2020 at 23:15, Alexandre Torres
              Porres <<a href="mailto:porres@gmail.com"
                target="_blank" moz-do-not-send="true">porres@gmail.com</a>>
              wrote:<br>
            </div>
            <div class="gmail_quote">
              <blockquote class="gmail_quote" style="margin:0px 0px 0px
                0.8ex;border-left:1px solid
                rgb(204,204,204);padding-left:1ex">
                <div dir="ltr">Hi, when compiling ELSE for camomille in
                  windows, me and Esteban are getting some errors.
                  Offending pieces of code are when trying to do things
                  like
                  <div>
                    <div><br>
                    </div>
                    <div><span style="color:rgb(36,41,46);font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace;font-size:12px;white-space:pre-wrap;background-color:rgb(255,251,221)">    t_atom at[ac];</span></div>
                  </div>
                </div>
              </blockquote>
              <div><br>
              </div>
              <div>If you want to maintain straight C compiler
                compatibility</div>
              <div><br>
              </div>
              <div>        t_atom* at = (t_atom*)malloc(ac *
                sizeof(t_atom));</div>
              <div><br>
              </div>
              <div>but you have to remember to free(at), &cet. You
                can avoid the free() if you HAVE_ALLOCA with</div>
              <div><br>
              </div>
              <div>
                <div>        t_atom* at = (t_atom*)alloca(ac *
                  sizeof(t_atom));</div>
              </div>
              <div><br>
              </div>
              <div>if you want to do it the C++ way without a
                std::vector<t_atom></div>
              <div><br>
              </div>
              <div>        t_atom* at = new t_atom[ac];</div>
              <div><br>
              </div>
              <div>but again you will have to</div>
              <div><br>
              </div>
              <div>        delete at;</div>
              <div><br>
              </div>
              <div>For my own externals, I write them all in C++ and use
                STL. Making the change from the C-world allocation of PD
                to the C++ world is not so hard, but it does involve a
                tiny bit of trickery which I only justify through
                expediency.</div>
              <div><br>
              </div>
              <div>- d</div>
            </div>
          </div>
        </blockquote>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Pd-dev mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Pd-dev@lists.iem.at">Pd-dev@lists.iem.at</a>
<a class="moz-txt-link-freetext" href="https://lists.puredata.info/listinfo/pd-dev">https://lists.puredata.info/listinfo/pd-dev</a>
</pre>
    </blockquote>
  </body>
</html>