core.simd and dynamic arrays

Johan j at j.nl
Sun Jan 26 16:43:19 UTC 2025


On Sunday, 26 January 2025 at 12:45:11 UTC, John C. wrote:
> Hello everyone. I am complete newbie in D and programming at 
> all and I can't understand why dynamic arrays can't be used 
> within following D code:
> ```d
> import std.random : uniform01;
> import core.simd;
>
> void main() {
>     align(32) float[] a = new float[128];
> ...
> ```

The `align(32)` applies to the slice `a`, not the contents of `a` 
(where `a` points to).

Some things to try:
- What exactly is the error reported? An out-of-bounds read/write 
would not result in a segfault. (but perhaps with optimization 
and UB for unaligned float8 access...)
- Print out the pointer to `a[0]` to verify what the actual 
alignment is.
- Does it work when you create an array of `float8`?  (`float8[] 
a = new float8[128/8];`)

By the way, `a[i], b[i] = uniform01(), uniform01();` does not do 
what you think it does. Rewrite to
```
a[i] = uniform01();
b[i] = uniform01();
```

cheers,
   Johan



More information about the Digitalmars-d-learn mailing list