zoukankan      html  css  js  c++  java
  • 写一个内存拷贝函数

    这个是我写的,着重于错误检查和拷贝的正确性,效率远远不如CRT的

    // 考虑重叠的状况
    void* _memcpy(void* dest, void* src, int len)
    {
        
    if(!dest || !src || !len || dest == src)
            
    return dest;

        
    char* pdest = static_cast<char*>(dest);
        
    char* psrc = static_cast<char*>(src);

        
    // dest 在 src + len 范围内
        if(pdest > psrc && pdest < (psrc + len))
        {
            
    // 先备份被覆盖部分
            int need = psrc + len - pdest;
            
    int offset = pdest - psrc;
            
    char* pcache = new char[need];

            
    int i = 0;
            
    for (i = 0; i < need; ++i)
                pcache[i] 
    = psrc[offset + i]; 

            
    // 拷贝起始部分
            for (i = 0; i < offset; ++i)
                pdest[i] 
    = psrc[i];
            
            
    // 拷贝剩余部分
            for (i = 0; i < need; ++i)
                pdest[offset 
    + i] = pcache[i]; 

            delete[] pcache;
        }
        
    else
        {
            
    for (int i = 0; i < len; ++i)
                pdest[i] 
    = psrc[i];
        }

        
    return dest;
    }
  • 相关阅读:
    学习python -- 第013天 类与对象
    学习python -- 第013天 bug
    学习python -- 第012天 函数(二)
    学习python -- 第012天 函数(一)
    学习python -- 第011天 字符串
    学习python -- 第010天 列表、元组、字典、集合总结
    排序_快速排序
    链表_逆置
    约瑟夫环-链表
    双栈_队列
  • 原文地址:https://www.cnblogs.com/yoran/p/1108167.html
Copyright © 2011-2022 走看看