The above sizeof doesn't give you the size of the array. It just gives you the size of a pointer, which is 4 bytes (32 bits) for 32-bit applications and 8 bytes (64 bits) for 64-bit applications. If want the actual size of the array, you have to take it
as a paramenter.
tiles = newTiles;
This assignment doesn't actually copy the array of strings. It just assigns the memory address
newTiles into tiles. And since tiles previously pointed to heap memory, you have a memory leak.
What I would recommend is to avoid using raw arrays and null-terminated strings, and instead use array and string classes like the STL's std::string/std::wstring and std::vector or MFC's CString and CArray.