<p>Am 13.04.2017 14:47 schrieb "Ryan Joseph" <<a href="mailto:ryan@thealchemistguild.com">ryan@thealchemistguild.com</a>>:<br>
><br>
><br>
> > On Apr 13, 2017, at 7:08 PM, Mattias Gaertner <<a href="mailto:nc-gaertnma@netcologne.de">nc-gaertnma@netcologne.de</a>> wrote:<br>
> ><br>
> >> as I understood from (<a href="http://wiki.freepascal.org/Dynamic_array">http://wiki.freepascal.org/Dynamic_array</a><<a href="http://wiki.freepascal.org/Dynamic_array">http://wiki.freepascal.org/Dynamic_array</a>>), SetLength will create a copy of the array and free the memory of the shorter array. In this case, a lot of memory operations and copy operations are performed thus degrading the performances of the code.<br>
> ><br>
> > Correct.<br>
><br>
> Why is it copying the array and freeing instead of resizing the existing block (realloc)? That sounds crazy but I don’t know how memory managers work.</p>
<p>SetLength *does* use a reallocate for this, but since it doesn't give you any guarantee for its success as its the task of the memory manager to deal with this, it's easier to assume that the array is indeed copied.</p>
<p>Regards,<br>
Sven</p>