First, Array<double> is not optimal - this will need about
N * max(16, sizeof(double)) + N * sizeof(void *) * 1.33
memory.
Try using Vector<double> instead. You might also try SetCount or Shrink to get that "1.33" down to 1.
Then, the memory, at least for Vector (or "sizeof(void *") need to be continous for single Vector (or Vector<void *> inside Array). On Win32, this might be a problem.