Quote: "I've been using the 0 element to store the size. "
I actually prefer starting my data at 0.
Right now, I'm using two global variables for my array. One keeps track of the physical size of the array, the other acts as a sort of internal pointer to how many elements I actually have stored. So for instance, I might have 10 items in my array, but it was defined with 15. This gives me room to grow without having to swap every time. Then, when I reach 15, copy the data to a temp array, redim with 20, copy back over.