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
NO_SCAN) if either are
void. This is why I still use
ubyte (or, in ae,
DataVec) for raw data.