Increasing the sizes of an array has always given me the shivers, as
beautiful as it is.

Could someone explain why this code behaves the way it does?

    string s = "1234";
    s.length = 7;
    writefln("\"%s\"", s);

prints:  "1234���"

Given that it makes no sense to extend a const-size array, shouldn't
there be a run-time check on the new size of the array, so that it
throws whenever it's bigger than the current size?



Also, another issue:

Let's say you have an array that you dynamically resize (meaning you
grow and shrink it a lot of times). In fact, let's say you have:
    int[] arr = new int[1024 * 1024];
and then you decide, hey, that's too big for how much space I
actually needed:
    arr.length = 5;

Can the rest of the array be garbage collected?

    a. If the answer is "yes", then how does the GC know?
    b. If the answer is "no", then doesn't that:
       (1) Mean that we can have memory leaks?
       (2) Mean that we still need an ArrayList!(T) type?

(Note that using Array!(T) does _NOT_ help here, because it can't
hold object references due to garbage collection issues.)

Reply via email to