On Tuesday, 8 October 2019 at 10:48:45 UTC, Jonathan M Davis
wrote:
The result of this is that code like
stack.popBack();
stack ~= foo;
stack ~= bar;
stack.popBack();
stack ~= baz;
will end up allocating all over the place. Every time you
append to the array after shrinking it, you're going to end up
with the GC allocating a new block of memory instead of
appending in place.
Thanks as well! I thought the code I posted would only allocate
when
the array ran out of capacity. And I see how, even if that's
worked
around with assumeSafeAppend, it becomes a bad idea to define the
stack functions against `ref T[]` as this makes it too easy for
other
code to slice the array and cause the bugs that assumeSafeAppend
allows.