内存函数和字符串函数相比更加灵活,模拟实现内存函数也可以加深对于内存的理解,今天我们就来介绍一下三个常见的的内存函数吧。
1.memcpy(内存拷贝函数)
- 函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置;
- 这个函数在遇到'\0'的时候并不会停下来;
- 如果source和destination有任何的重叠,复制的结果都是未定义的
memcpy函数还是比较好理解的,所以我们直接模拟实现一下:
关于void*,在之前的qsort函数时已经说过了,还不熟悉的朋友可以看一下之前的博客。
2.memmove
- 和memcpy的差别就是memmove处理的源内存块和目标内存块是可以重叠的
- 如果源空间和目标空间出现重叠,就得使用memmove函数处理
接着我们来模拟实现一下memmove:
最重要的是将dest<src和dest>=src进行分析,找出其中的规律。
3.memcmp
- 比较从ptr1和ptr2指针开始的num个字节
- 返回值如下: