function copies n bytes from memory area
src to memory area dest.
The memory areas may overlap: copying takes place as though
the bytes in
are first copied into a temporary array that does not overlap
and the bytes are then copied from the temporary array to