On Wednesday, 28 May 2014 at 19:43:53 UTC, Nordlöw wrote:
I would like my radix sort function radixSortImpl() at
https://github.com/nordlow/justd/blob/master/intsort.d
to not use the GC. However, when I tag with @nogc I get the
error:
intsort.d(195,47): Error: @nogc function
'isort.radixSortImpl!(byte[], "a", false).radixSortImpl' cannot
call non-@nogc function 'std.array.uninitializedArray!(byte[],
immutable(ulong)).uninitializedArray'
Is there an alternative to
std.array: uninitializedArray
Elem[] y = uninitializedArray!(Elem[])(n);
that neither use the GC and nor preinitialize the data?
malloc? There's no wrapper around it though, like there is for
uninitializedArray.
Keep in mind though that currently, you have to choose either of
"pure" (GC) or "nogc" (malloc) if you need dynamic allocation :/
Could the recent DMD pull optimization to scope here
https://github.com/D-Programming-Language/dmd/commit/abc7033bf9cf7f7224a47e45096efc48a21b5ab8
be used?
/Per
I don't think scope can be used to create a dynamic array on the
stack. I think it requires the object's type be statically known.
I could be wrong though.
If you know "n" has a max size, you could you create a fixed size
array, or attempt a "alloca" array?