On Wednesday, 9 November 2022 at 11:55:28 UTC, Guillaume Piolat wrote:
I've been avoiding void[] for this reason (I mean, void[] _could_ contain pointers), but I think I'm cargo-culting this?

If I do:
    ubyte[] arr = new ubyte[100_000_000];
void[] arr2 = cast(void[]) arr; // will this still avoid scanning?

Does the GC still know that this area is NO_SCAN?

Yes (as per Adam's post).

However, it's easy to lose it with operations like concatenation or appending. `a ~ b` will allocate `void[]` (without `NO_SCAN`) if either are `void[]`. This is why I still use `ubyte[]` (or, in ae, `Data` / `DataVec`) for raw data.

Reply via email to