Question: Can I use C to know whether a file operation is performed (and where it is performed) on the disk at run time?

Answer: 
If you're interested in which will perform better, you need to test it *on the target platform*. Nothing in the standard mandates how the functions are implemented and, while it may seem logical that a non-checking `memcpy` would be faster, this is by no means a certainty.

It's quite possible, though unlikely, that the person who wrote `memmove` for your particular compiler was a certified genius while the poor soul who got the job of writing `memcpy` was the village idiot :-)

Although, in reality, I find it hard to imagine the `memmove` could be faster than `memcpy`, I don't discount the possibility. *Measure, don't guess.*
On some ARM platform im working on, memmove was 3 times faster than memcpy for short unalligned load. As memcpy and memmove are the only truly portable type-punning mechanism, you would have thought that the would be some check by the compiler before trying to use the NEON to do it.