1. memcpy使⽤和模拟实现
格式:void*memcpy(void*dest,void*src,size_t num)
功能:按字节把源参数的前num个字节数据复制到dest。
这个函数在遇到 '\0' 的时候并不会停下来。
如果source和destination有任何的重叠,复制的结果都是未定义的。
头文件:<string.h>
模拟实现:
void* my_memcpy(void* dest, void* src, size_t num)
{
(char*)dest;
(char*)src;
void* ret = dest;
while (num )
{
*(char*)dest = *(char*)src;
dest = (char*)dest +1;
src= (char*)src + 1;
num--;
}
return ret;
}
2. memmove使⽤和模拟实现
格式:void*memmove(void*dest,void*src,size_t num)
功能:和memcpy的差别就是memmove函数处理的源内存块和⽬标内存块是可以重叠的。
如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。
头文件:string.h
模拟实现:
void my_memmove(void* dest, void* src,size_t num)
{
void* ret = dest;
if (dest < src)
{
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
else
{
src = (char*)src + num - 1;
dest = (char*)dest + num - 1;
while (num--)
{
*(char*)dest = *(char*)src;
src = (char*)src - 1;
dest = (char*)dest - 1;
}
}
return ret;
}
3. memset函数的使⽤
格式:void * memset ( void * ptr, int value, size_t num );
功能:memset是⽤来设置内存的,将内存中的值以字节为单位设置成想要的内容
头文件:string.h
4. memcmp函数的使⽤
格式:int memcmp ( const void * ptr1, const void * ptr2, size_t num );
功能:⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节
头文件:string,h