0
点赞
收藏
分享

微信扫一扫

【内存函数的介绍】->memcpy、memmove、memcmp

内存函数和字符串函数相比更加灵活,模拟实现内存函数也可以加深对于内存的理解,今天我们就来介绍一下三个常见的的内存函数吧。

1.memcpy(内存拷贝函数)

【内存函数的介绍】->memcpy、memmove、memcmp_未定义

  • 函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置;
  • 这个函数在遇到'\0'的时候并不会停下来;
  • 如果source和destination有任何的重叠,复制的结果都是未定义的

【内存函数的介绍】->memcpy、memmove、memcmp_未定义_02

memcpy函数还是比较好理解的,所以我们直接模拟实现一下:

【内存函数的介绍】->memcpy、memmove、memcmp_内存拷贝_03

关于void*,在之前的qsort函数时已经说过了,还不熟悉的朋友可以看一下之前的博客。



2.memmove

【内存函数的介绍】->memcpy、memmove、memcmp_内存拷贝_04

  • 和memcpy的差别就是memmove处理的源内存块和目标内存块是可以重叠的
  • 如果源空间和目标空间出现重叠,就得使用memmove函数处理

【内存函数的介绍】->memcpy、memmove、memcmp_sort函数_05

接着我们来模拟实现一下memmove:

【内存函数的介绍】->memcpy、memmove、memcmp_sort函数_06

最重要的是将dest<src和dest>=src进行分析,找出其中的规律。

举报

相关推荐

0 条评论