memcpy
内存拷贝函数(内存空间不能重叠)
void * memcpy ( void * destination, const void * source, size_t num ) ;
模拟实现memcpy
#include <assert.h>
void* my_memcpy(void* dest, const void* src, size_t num)
{
assert(dest && src);
void* begin = dest;
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
return begin;
}
memmove
内存拷贝函数(可以处理内存重叠的情况)
void * memmove ( void * destination, const void * source, size_t num ) ;
模拟实现memmove
#include <assert.h>
void* my_memmove(void* dest, const void* src, size_t num)
{
assert(dest && src);
void* begin = dest;
//从前向后拷贝
if (dest < src)
{
while (num--)
{
*(char*)dest = *(char*)src;
dest = (char*)dest + 1;
src = (char*)src + 1;
}
}
//从后向前拷贝
else
{
while (num--)
{
*((char*)dest + num) = *((char*)src + num);
}
}
return begin;
}
memcmp
内存比较函数
int memcmp ( const void * ptr1, const void * ptr2, size_t num ) ;
memset
内存设置函数
void * memset ( void * ptr, int value, size_t num ) ;
特点:
以字节为单位设置内存
使用实例
设置arr数组的前20个字节,每个字节设置成1
int main()
{
int arr[20] = { 0 };
memset(arr, 1, 20);
return 0;
}