标签:
如果两段内存重叠,用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 }
标签:
原文地址:http://www.cnblogs.com/WonderHow/p/4442584.html