A CStringArray would be much easier to use.

It will reserve extra space so that it does not need to continually increase
allocated space and copy the contents from the current memory to the new
allocated memory (CString will do the same). The extra space is not very large.
You can use trhe FreeExtra() member function to remove it.