<HTML>
<div><style> BODY { font-family:Arial, Helvetica, sans-serif;font-size:12px; }</style>I wonder if there's any incentive to have such a feature in-built in the compiler.  The bounty on #34031 has probably expired by now.  If not, then your unit would be a great addition.</div><div><br>
</div><div>Page-aligned memory is probably something that warrants further discussion with the core team.<br>
</div><div><br>
</div><div>Gareth aka. Kit<br>
</div> <br>
<br>
<span style="font-weight: bold;">On Fri 29/03/19 05:01 , "Anthony Walter" sysrpl@gmail.com sent:<br>
</span><blockquote style="BORDER-LEFT: #F5F5F5 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT:0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px"><div dir="ltr"><div dir="ltr">Here is the full implementation of aligned arrays, let me know if it works for you.<div><br>
</div><div><a href="https://www.getlazarus.org/arrays/" target="_blank">https://www.getlazarus.org/arrays/</a><br>
</div><div><br>
</div><div>Here is another example:</div><div><br>
</div><div><span style="font-family: monospace, monospace;">uses</span></div><div><span style="font-family: monospace, monospace;">  AlignArrays;</span></div><div><span style="font-family: monospace, monospace;"><br>
</span></div><div><span style="font-family: monospace, monospace;">
procedure Test;</span></div><div><span style="font-family: monospace, monospace;">var<br>
</span></div><div><span style="font-family: monospace, monospace;">  VertexData: TAlignedArray<tvec3>;</tvec3></span></div><div><span style="font-family: monospace, monospace;">  V: PVec3;</span></div><div><span style="font-family: monospace, monospace;">  I: Integer;</span></div><div><span style="font-family: monospace, monospace;">begin</span></div><div><span style="font-family: monospace, monospace;">  VertexData.Length := 100; // page sized and aligned memory allocated here</span></div><div>
<span style="font-family: monospace, monospace;">  V := VertexData[0]; // get a reference to the first item</span></div><div><span style="font-family: monospace, monospace;">  for I := 0 to V.Length - 1 do</span></div><div><span style="font-family: monospace, monospace;">  begin</span></div><div><span style="font-family: monospace, monospace;">    V^ := ComputeVertex(I); // write to vertex data faster via a pointer<br>
</span></div><div><span style="font-family: monospace, monospace;">    Inc(V);</span></div><div><span style="font-family: monospace, monospace;">  end;</span></div>
<div><span style="font-family: monospace, monospace;">  for V in VertexData do // array like enumerators are supported</span></div><div><span style="font-family: monospace, monospace;">    PrintVertex(V);</span></div><div><span style="font-family: monospace, monospace;">  V.Item[6] := ComputeVertex(Random(100)); // you can write directly using this syntax</span></div><div><span style="font-family: monospace, monospace;">  V[7]^ := ComputeVertex(Random(100)); // or write by dereferencing  the default indexer</span></div><div><span style="font-family: monospace, monospace;">
end; // there is no need to free the memory, it is taken care of for you by finalize</span></div><div><br>
</div></div></div> 
 

</blockquote></HTML>