Came across these two pieces of advice regarding the use of these library functions in C: DO use memmove() instead of memcpy() in case you're dealing with overlapping memory regions.
DON'T try to use memset() to initialize type int, float, or double arrays to any value other than 0.
More details here . If you are an embedded C programmer, its worth a read.