memcpy 和 memmove 的区别,memcpy 和 strcpy 的区别

以下是man memcpy的结果:

 #include <string.h>


       void *memcpy(void *dest, const void *src, size_t n);


DESCRIPTION
       The  memcpy()  function  copies  n bytes from memory area src to memory
       area dest.  The memory areas must not overlap.  Use memmove(3)  if  the
       memory areas do overlap.

memcpy、memmove
memmove是用来处理src和dest指向的存储空间有重叠的情况,所以它用到一个临时数组,将src拷贝到临时数组,再从临时数组拷贝到dest,这样就算有重叠也不会出错,这也是需要代价的,所以没有重叠的情况应该用memcpy。


memcpy、strcpy

strcpy主要用于拷贝字符串,而memcpy可以拷贝任意类型,当然了,它才不关心拷贝的是什么类型,反正是按内存数据一整块一整块的拷贝。二者的主要区别是strcpy'以\0'为结束标识,而memcpy没有结束标识,所以需要指定拷贝的大小。


你可能感兴趣的:(function,存储)