On Mon, 08 Nov 2010 19:30:03 +0200, Jens Mueller <[email protected]>
wrote:
I find this behavior rather strange. Arrays are neither passed by value
(copying the whole array) nor by reference. I see reasons for doing it
like this, e.g. doing array = array[1..$] inside should not affect the
outside.
Compare to this C-ish program:
void foo(int *array, int length) {
array = (int*)realloc(array, (length += 1000) * sizeof(int)); // may copy
the array
array[0] = 1;
}
int* a = new int[1];
foo(a, 1);
assert(a[0] == 1); // fails if a needs to copied inside foo
C's realloc *may* copy the memory area being reallocated. Just like when
using realloc, it's something you must be aware of when using D arrays.
--
Best regards,
Vladimir mailto:[email protected]