[fpc-devel] State of SSE/AVX intrinsics
J. Gareth Moreton
gareth at moreton-family.com
Tue Apr 21 20:40:05 CEST 2020
I made a bit of a big post with "Future development plans" where I
mentioned 'aligned allocation', especially since C11 has the feature and
Microsoft have their own non-portable set of functions. Hopefully it
will spawn some discussion.
Sorry to keep going back to the dynamic array issue. The comparison
with static arrays is a good one, because this is where bugs often appear.
Take the common Move function for some array V (assume it's an array of
Integers for the sake of this example) and a pointer to a block of memory:
Move(V, DestPtr^, Length(V) * SizeOf(Integer)); { V and DestPtr can be
swapped around if you like }
If V is a static array, this will work as expected, since V points to
the first element in the array. However, if V is a dynamic array, then
this call will likely raise an access violation, or if it doesn't,
DestPtr^ will contain garbage - if you're writing to V, you'll end up
giving it an invalid pointer to its data, while the real pointer will
end up dangling. You have to specify V[0] rather than V for it to work
as expected (which works for static arrays too).
Gareth aka. Kit
On 21/04/2020 16:18, Sven Barth wrote:
> denisgolovan <denisgolovan at yandex.ru <mailto:denisgolovan at yandex.ru>>
> schrieb am Di., 21. Apr. 2020, 14:58:
>
> > I think Gareth meant the address of V instead (Pointer(@V)).
> >
> > Regards,
> > Sven
>
> Hm. I have no idea why anyone would take pointer to pointer :)
>
>
> Because they might have forgotten that dynamic arrays behave different
> from static ones?
>
>
> BTW, Sven, what's your opinion on dynamic arrays alignment problem?
>
>
> I have none, cause I'm not dealing with such problems.
>
> Regards,
> Sven
--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20200421/2a7bffd4/attachment.html>
More information about the fpc-devel
mailing list