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.)