• 写一个内存拷贝函数


    这个是我写的,着重于错误检查和拷贝的正确性,效率远远不如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;
    }
  • 相关阅读:
    异常处理机制中的return关键字
    QuickHit 项目
    kali2.0升级
    sslscan
    RC4弱密码套件检测
    CVE-2017-11882漏洞复现
    应急响应小总结
    服务器日志分析
    《x86汇编语言:从实模式到保护模式 》学习笔记之:第一次编写汇编语言
    nasm不是内部或外部命令
  • 原文地址:https://www.cnblogs.com/yoran/p/1108167.html
Copyright © 2020-2023  润新知