首页 > 代码库 > memcpy内存拷贝及优化策略图解
memcpy内存拷贝及优化策略图解
一般内存拷贝与优化
代码实现
#include<iostream>
usingnamespacestd;
//不安全的内存拷贝(当源内存地址与目标内存地址重叠时会产生错误)
void h_memcpy(char*src,char *dst,intsize){
if (src =http://www.mamicode.com/= NULL|| dst == NULL) {
return;
}
while (size--) {
*dst++ = *src++;
}
}
//优化后的内存移动(安全的内存拷贝,措施为根据源内存地址和目的内存地址不同使用不同的拷贝顺序)
void h_memmove(char*src,char *dst,intsize){
if (src =http://www.mamicode.com/= NULL|| dst == NULL) {
return;
}
if (src > dst) {
while (size--) {
*dst++ = *src;
}
}elseif(src < dst){ // 正向反向拷贝的目的就是为了避免未移动内存被覆盖
dst = dst + size -1;
src = http://www.mamicode.com/src +size -1;
while (size--) {
*dst-- = *src--;
}
}
// src =http://www.mamicode.com/=dst , you should do nothing!~
}
int main(intargc,constchar* argv[])
{
char s[] = "12345";
char *p1 = s;
char *p2 = s+2;
printf("%s\n",p1);
printf("%s\n",p2);
h_memcpy(p1, p2, 2);
printf("%s\n",p2);
return 0;
}
memcpy内存拷贝及优化策略图解