<p>Am 01.04.2017 05:42 schrieb "Ryan Joseph" <<a href="mailto:ryan@thealchemistguild.com">ryan@thealchemistguild.com</a>>:<br>
><br>
> As far as the compiler is concerned what’s the difference between clearing an array using a for-loop vs. FillChar? It seems like iterating the array would be slower but what does FillChar do exactly and is it faster? The primary concern here is that the memory originally allocated (using SetLength right?) remains in the same location.<br>
><br>
> var<br>
>   list: array of integer;<br>
><br>
> SetLength(list, 10);<br>
><br>
> for i := 0 to high(list) do<br>
>   list[i] := 0;<br>
><br>
> FillChar(list[0], Length(list) * sizeof(integer), 0);</p>
<p>It totally depends on the type. In case of primitive types like integers there is indeed only the performance difference (though if you know that the element size is four FillDWord could be even faster, depending on the implementation in the RTL).<br>
If you have managed types however or class instances the result of the FillChar (or equivalent) would be memory leaks.</p>
<p>Plase also note that after a SetLength the new elements are already 0 (or equivalent).</p>
<p>Regards,<br>
Sven</p>