Reallocating an array and then copying it's contents isn't necessary. You can just allocate extra arrays as needed. The first long word in each array simply links to the next array. These link pointers are also used for freeing the arrays when they're no longer needed.
Easy