memmove
拷贝内存块到目标空间(目标地址和拷贝内容的地址可重叠)
函数原型
void*memmove(void*dest,constvoid*src,size_tcount);
参数讲解
参数 | dest | src | count |
解析 | 目标空间地址 | 要拷贝内容空间源地址 | 拷贝内容字节数 |
返回值讲解
返回目标空间的起始地址
函数讲解
相同点
memmove函数跟memcpy函数注意细节大致相同主要为两点
1、 我们一定要注意memmove第三个参数传的是要传内容的字节数
我们想把arr1中前五个元素传中arr2,在memmove就要写20。为什么呢?因为arr1为整型数组,其中包含的元素也是整型,是4个字节。而我们要传递五个整型,所以就是4*5个字节
2、目的空间大小一定要能容纳memcpy所拷贝的内容
如果拷贝在内容超过目的空间大小,那么就会溢出 编译器会报出警告
一般使用细节很memcpy一样,请参考:memcpy函数详解
不同点
memmove跟memcpy唯一一点不一样的是memmove解决了目标地址和拷贝内容的地址重叠的拷贝的问题(这一点memcpy也可以了,但是之前memcpy好像不能)
memmove函数具体实现可以参考这篇:模拟实现memmove函数