本文主要分别讲解四个内存函数的使用:
1.memcpy 2.memmove 3.memset 4.memcmp
1,memcpy的使用和模拟实现
(1)函数memcpy从source的位置开始向后复制num个字节的数据到destination指向的内存位置。(注意:这个函数遇到'\0'不会停止)
(2)如果source和destination有任何的重叠复制的结果都是未定义的!(对于重叠我们将交于memmove来处理)
下图是memcpy的使用:
下图是开始进行对memcpy的模拟实现其功能的函数:
上图assert使用用来断言des指针和src指针是否NULL。
这个则是将src的数据复制到dest中,count是复制的字节个数,直到count--到0,跳出循环。
(转类型为char*是因为我们需要一个字节一个字节的复制,因为我们并不知道复制数据类型,而转类型为char*就能很好的解决这个问题)
2,memmove的使用和模拟
(1)memmove和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。
(2)如果源空间和⽬标空间出现重叠,就得使⽤memmove函数来处理。
如下图则是mommove的使用:
下图是开始进行memmove的模拟实现其功能的函数:
我们是将arr1数组中的起始位置开始的20个字节拷贝到arr1+2的起始位置开始。(arr1传给src,arr1+2传给dst,count是拷贝的字节)
3,memset的使用和模拟
memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容。
如下图则是memset函数的使用:
其输出结果为:
上图则是将str数组中的字符串前六个字节设置‘x'。
4,memcmp的使用和模拟实现
该函数是⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节 。
该函数的返回值如下:
下图为该函数的使用:
上图则是将buffer1和buffer2进行比较,比较字节大小为sizeof(buffer1)。