码迷,mamicode.com
首页 > 其他好文 > 详细

memcpy内存拷贝及优化策略图解

时间:2014-10-08 18:20:05      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   使用   ar   sp   


一般内存拷贝与优化


bubuko.com,布布扣

bubuko.com,布布扣


代码实现


#include<iostream>

usingnamespacestd;

 

//不安全的内存拷贝(当源内存地址与目标内存地址重叠时会产生错误)

void h_memcpy(char*src,char *dst,intsize){

    if (src == NULL|| dst == NULL) {

       return;

    }

    

    while (size--) {

       *dst++ = *src++;

    }

}

 

//优化后的内存移动(安全的内存拷贝,措施为根据源内存地址和目的内存地址不同使用不同的拷贝顺序)

void h_memmove(char*src,char *dst,intsize){

    if (src == NULL|| dst == NULL) {

       return;

    }

    

    if (src > dst) {

       while (size--) {

           *dst++ = *src;

       }

    }elseif(src < dst){     // 正向反向拷贝的目的就是为了避免未移动内存被覆盖

       dst = dst + size -1;

       src = src +size -1;

       while (size--) {

           *dst-- = *src--;

       }

    }

    // src ==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内存拷贝及优化策略图解

标签:style   blog   http   color   io   os   使用   ar   sp   

原文地址:http://blog.csdn.net/paulery2012/article/details/39894919

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