前言
memcpy()函数可以拷贝任何类型的数组,不只限于字符串,但是注意,如果拷贝的长度不能超过源头的长度,如果超过源头的长度就会越界访问,拷贝进目标数组里的可能有随机值。
一、memcpy是什么?
memcpy()函数是可以拷贝任意类型的数组,目标数组的大小一定要足够放入拷贝长度的大小。
二、my_memcpy()
1.函数的实现
代码如下(示例):
void* my_memcpy(void* dest, const void* src, size_t num)
{
assert(dest != NULL);
assert(src != NULL);
void* ret = dest;
while (num--)
{
*(char*)dest = *(char*)src;
++(char*)dest;
++(char*)src;
}
return ret;
}
总结
memcpy()函数,注意,拷贝的长度不能超过源头数组的长度,目标数组的长度要大于拷贝长度。
memcpy()函数不进行重叠拷贝,但是VS编译器下,可以进行重叠拷贝,重叠拷贝的函数memmove().