Alignment of dynamic arrays

Luc Bourhis via Digitalmars-d digitalmars-d at puremagic.com
Thu Jan 8 16:48:43 PST 2015


On Friday, 9 January 2015 at 00:23:47 UTC, bearophile wrote:
> Luc Bourhis:
>
>> With "auto a = new double[1000]", is there any guarantee that  
>> a.ptr is aligned on a 16-byte boundary?
>
> Arrays are aligned on a 16-byte.

Good news!

> But if you slice them, this alignment can be broken.

Yes, of course. It's part of the game to prevent 
alignment-breaking slices.

> In past I suggested to put the alignment of an array in the D 
> type system, as an optional extra information (if the alignment 
> is not correct this causes compile-time errors in some cases 
> and some run-time errors when the slicing bounds are runtime 
> values).

I like the general idea. But it would seem more natural to me if 
a slice returned an aligned array if possible, otherwise a 
misaligned one.

Thanks for your thorough answer!


More information about the Digitalmars-d mailing list