首页 > 编程语言 > 详细

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

时间:2015-04-20 22:11:46      阅读:283      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!