[T, I | Integer?(I)] allocateArray(static T, count:I) { var begin = allocateRawMemory(T, SizeT(count)); var end = begin + SizeT(count); try { initializeMemory(begin, end); } catch (e) { freeRawMemory(begin); throw e; } return CoordinateRange(begin, end); } [T] freeArray(array:CoordinateRange[T]) { destroyMemory(begin(array), end(array)); freeRawMemory(begin(array)); } main() { var xs = allocateArray(Int, 5); for (x in xs) println(x); for (i, x in enumerated(xs)) x = Int(i); println("--"); for (x in xs) println(x); freeArray(xs); }