memcpy函数实现
对于memcpy函数实现经常出现在面试题目中
C语言标准库中定义如下
void* __cdecl memcpy(
_Out_writes_bytes_all_(_Size) void* _Dst,
_In_reads_bytes_(_Size) void const* _Src,
_In_ size_t _Size
);
具体原理就是按字节将Src中的内容拷贝到Dst中。这里要注意内存重叠问题。
如果dst在src要拷贝的内存范围内,如果从低字节向高字节拷贝的话会存在内存覆盖问题:
如下图代码
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void *my_memcpy(void* dst, void *src, size_t size)
{
if (dst == nullptr || src == nullptr || size <= 0)
return nullptr;
char* pdst = (char*)dst ;
char* psrc = (char*)src ;
while (size--)
{
*pdst++ = *psrc