zoukankan      html  css  js  c++  java
  • 内存的移动和拷贝

    1. // 功能:由src所指内存区域复制count个字节到dest所指内存区域。  
    2. // 说明:src和dest所指内存区域可以重叠,但复制后dest内容会被更改。函数返回指向dest的指针  
    3. void *memmove(void *dest , const void *src , size_t count)  
    4. {  
    5.     assert( (dest != NULL) && (src != NULL));     //安全检查  
    6.     assert( count > 0 );  
    7.   
    8.     char *psrc = (char *) src;  
    9.     char *pdest = (char *) dest;  
    10.     //检查是否有重叠问题  
    11.     if( pdest < psrc )  
    12.     {  
    13.         //正向拷贝  
    14.         while( count-- )  
    15.             *pdest++ = *psrc++;  
    16.     }  
    17.     else if( psrc < pdest )  
    18.     {  
    19.         //反向拷贝  
    20.         psrc = psrc + count - 1;  
    21.         pdest = pdest + count - 1;  
    22.         while( count-- )  
    23.             *pdest-- = *psrc--;  
    24.     }  
    25.     return dest;  
    26. }  
    27.   
    28. // 功能:由src指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。  
    29. // 说明:src和dest所指内存区域不能重叠,函数返回指向dest的指针  
    30. void *memmcpy(void *dest , const void *src , size_t count)  
    31. {  
    32.     assert( (dest != NULL) && (src != NULL));     //安全检查  
    33.     assert( count > 0 );  
    34.   
    35.     char *psrc = (char *) src;  
    36.     char *pdest = (char *) dest;  
    37.     while( count-- )  
    38.         *pdest++ = *psrc++;  
    39.   
    40.     return dest;  
    41. }  
  • 相关阅读:
    小毛驴基本语法
    文本数据IO操作--字符流
    基本IO操作--字节流
    文件指针操作
    文件操作——RandomAccessFile
    Java文件操作——File
    前端修炼-javascript关键字之prototype
    Redux介绍及基本应用
    IOS应用程序生命周期
    EF 只更新部分字段
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2634559.html
Copyright © 2011-2022 走看看