C++中两块内存重叠的string的copy方法

时间:2021-09-23 08:12:47

如果两段内存重叠,用memcpy函数可能会导致行为未定义。 而memmove函数能够避免这种问题,下面是一种实现方式:

 #include <iostream>
using namespace std;
void* memmove(void* str1,const void* str2,size_t n)
{
char* pStr1= (char*) str1;
const char* pStr2=(const char*)str2;
if (pStr1< pStr2 ) {
for(size_t i=;i!=n;++i){
*(pStr1++)=*(pStr2++);
}
}
else{
pStr1+=n-;
pStr2+=n-;
for(size_t i=;i!=n;++i){
*(pStr1--)=*(pStr2--);
}
}
return str1;
}

C++中两块内存重叠的string的copy方法


C++中两块内存重叠的string的copy方法