Dynamic Array Garbage collection

wolftousen eliot.darkwolf at gmail.com
Tue Feb 24 14:31:33 PST 2009


I have a function defined as:

some_function(int[] array) { ... };  //this function does not ever modify values of array

When I call this function (once every program cycle) from an object using an array of type short:

//member variable in an object
short[] x = new short[4];

//object calls this
some_function([ x[0], x[1], x[2], x[3] ]);

After a few seconds of the program running, x[0] and x[1] values are set to 0 and a couple values of another array in the object are modified as well.

I have found that this bug is corrected by calling delete at the end of some_function of the variable array.  This tells me that the garbage collector is acting funny if I do not call delete on the array.  (I have watched the memory usage of the program and it doesn't fluctuate or pause or anything to signal the freeing/allocating of memory....)

Any Idea what is going on?


More information about the Digitalmars-d-learn mailing list