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. }  
  • 相关阅读:
    【转】给ExtJS的Grid增加两行tbar
    AWK使用手册
    SED单行脚本快速参考(Unix 流编辑器)
    Linux的用户和用户组管理
    Linux下中文man帮助安装。
    关于TLBB 客户端UI界面修改几个定义了解
    正则表达式30分钟入门教程
    VimDiff技巧
    CentOS 更换网易源
    Mysql数据库搭建Linux
  • 原文地址:https://www.cnblogs.com/zhanglanyun/p/2634559.html
Copyright © 2011-2022 走看看