转自 http://c.biancheng.net/cpp/html/156.html
memcpy 用来复制内存内容
-
void * memcpy ( void * dest, const void * src, size_t num );
-
并不关心被复制的数据类型,只是逐字节地进行复制,这给函数的使用带来了很大的灵活性,可以面向任何数据类型进行复制。
-
dest 指针要分配足够的空间,也即大于等于 num 字节的空间。如果没有分配空间,会出现断错误。
-
dest 和 src 所指的内存空间不能重叠
-
memcpy 复制内存内容
-
void * memmove(void *dest, const void *src, size_t num);
-
当src 和 dest 所指的内存区域重叠时,memmove() 仍然可以正确的处理
示例
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
char str[] = "memmove can be very useful......";
memmove (str+20,str+15,11);
puts (str);
system("pause");
return 0;
}
运行结果:
memmove can be very very useful.
这段代码能够很好的说明内存重叠时的情况:先将内容复制到类似缓冲区的地方,再用缓冲区中的内容覆盖 dest 指向的内存