On 11/05/2012 05:11 PM, Malte Skarupke wrote:
Following code:

void main()
{
import core.memory;
GC.disable();
scope(exit) GC.enable();

int[] a = [1, 2, 3, 4, 5];
foreach(i; 0 .. 1000000000)
{
--a.length;
a ~= i;
}
}

That loop will keep on allocating in every iteration until your memory
is full.

Is there a way to do something similar to this without allocating? I
have also tried slicing:
a = a[0 .. $ - 1]; // instead of (--a.length;)

But neither one works.

How do you work with the dynamic array without having to rely on the GC
all the time? I want something similar to the stl vector, which only
re-allocates once your array grows past a certain size, not on every
append.

Thanks!

Malte

I think you want assumeSafeAppend() as explained here:

  http://www.dsource.org/projects/dcollections/wiki/ArrayArticle

Ali

Reply via email to