一个memcpy函数包含了许多边界问题,其实也称为memmove 函数,哈哈。手写一下加深自己的印象
#include<iostream>
using namespace std;
void memcpy(void *pDst ,void *pSrc ,size_t length)
{
char *dst=static_cast<char*>(pDst);
char *src=static_cast<char*>(pSrc);
if ((src==nullptr)||(dst==nullptr))
{
/* code */
return;
}
if (dst<src||dst>src+length)
{
/* code */
for (int i = 0; i < length; ++i)
{
/* code */
*dst++=*src++;
}
}
else
{
dst=dst+length-1;
src=src+length-1;
for (int i = length; i >=0 ; i--)
{
/* code */
dst[i]=src[i];
}
}
}
int main(int argc, char const *argv[])
{
char src[]="this is a test";
char dst[10]={0};
memcpy(dst,src,6);
cout<<dst<<endl;
return 0;
}