zoukankan      html  css  js  c++  java
  • memmove实现

    看vector的insert方法时跟到最后有一段关于memmove的调用,总觉得不得劲,想知道它的实现

     看了个大佬的博客,记录一下

    其中关键的三点如下:

    (1)当源内存的首地址等于目标内存的首地址时,不进行任何拷贝
    (2)当源内存的首地址大于目标内存的首地址时,实行正向拷贝

    (3)当源内存的首地址小于目标内存的首地址时,实行反向拷贝

    void* memmove(void* dest, const void* src, size_t n)
    {
        char * d  = (char*) dest;
        const char * s = (const char*) src;
      
        if (s>d)
        {
             // start at beginning of s
             while (n--)
                *d++ = *s++;
        }
        else if (s<d)
        {
            // start at end of s
            d = d+n-1;
            s = s+n-1;
      
            while (n--)
               *d-- = *s--;
        }
    	
        return dest;
    }
    

      原文链接:https://blog.csdn.net/yzy1103203312/article/details/81006029

  • 相关阅读:
    一. js高级(1)-面向对象编程
    tips01- 定位
    h5c3 part6 flex
    h5c3 part5 background and transform
    template and pagination
    h5c3 part4
    h5c3 part3
    h5c3 part2
    h5c3 part1
    学习博客
  • 原文地址:https://www.cnblogs.com/Cxiangyang/p/13892440.html
Copyright © 2011-2022 走看看