c/string/byte/memmove

@1@ Copies characters from the object pointed to by  to the object pointed to by. Both objects are interpreted as arrays of. The objects may overlap: copying takes place as if the characters were copied to a temporary character array and then the characters were copied from the array to. @@The behavior is undefined if access occurs beyond the end of the dest array. The behavior is undefined if either or  is an invalid or null pointer. @2@ Same as, except when detecting the following errors at runtime, it zeroes out the entire destination range (if both  and  are valid) and calls the currently installed constraint handler function:
 * or is a null pointer
 * or is greater than rsize_max
 * is greater than (buffer overflow would occur)

@@The behavior is undefined if the size of the character array pointed to by <  <= ; in other words, an erroneous value of  does not expose the impending buffer overflow.

Return value
@1@ Returns a copy of @2@ Returns zero on success and non-zero value on error. Also on error, if is not a null pointer and  is valid, writes  zero bytes in to the destination array.