码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-04-20 22:13:16      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:

如果两段内存重叠,用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方法

标签:

原文地址:http://www.cnblogs.com/WonderHow/p/4442584.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!