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

 1 #include <iostream>
 2 using namespace std;
 3 void* memmove(void* str1,const void* str2,size_t n)
 4 {
 5     char* pStr1= (char*) str1;
 6     const char* pStr2=(const char*)str2;
 7     if  (pStr1< pStr2 ) {
 8         for(size_t i=0;i!=n;++i){
 9             *(pStr1++)=*(pStr2++);
10         }
11     }
12     else{
13         pStr1+=n-1;
14         pStr2+=n-1;
15         for(size_t i=0;i!=n;++i){
16             *(pStr1--)=*(pStr2--);
17         }
18     }
19     return str1;
20 }
C++中两块内存重叠的string的copy方法

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

相关文章:

  • 2021-10-19
  • 2021-08-13
  • 2021-06-23
  • 2021-12-16
  • 2022-03-08
  • 2021-11-08
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-05-12
  • 2022-12-23
  • 2023-03-23
  • 2022-12-23
  • 2021-09-26
  • 2021-06-14
相关资源
相似解决方案