山寨版memcpy , memmove

  1: void*
  2: memcpy ( void* dst, void* src, size_t len )
  3: {
  4:     size_t i = 0 ;
  5:     if((long)dst % sizeof(long) == 0 &&
  6:                 (long)src % sizeof(long) == 0 &&
  7:                 len % sizeof(long) == 0 ){
  8:         long *d = dst ;
  9:         const long *s = src ;
 10:         for(i=0;i<len/sizeof(long);++i){
 11:             d[i] = s[i] ;
 12:         }
 13:     }else{
 14:         char *d = dst ;
 15:         const *s = src ;
 16:         for(i=0;i<len;++i){
 17:             d[i] = s[i] ;
 18:         }
 19:     }
 20:     return dst ;
 21: }    

 

 

  1: void*
  2: memmove ( void* dst, void* src, size_t len )
  3: {
  4:     size_t i = 0 ;
  5:     if((long)dst < (long)src){
  6:         return memcpy(dst, src, len) ;
  7:     }
  8: 
  9:     if((long)dst % sizeof(long) == 0 &&
 10:                 (long)src % sizeof(long) == 0 &&
 11:                 len % sizeof(long) == 0){
 12:         long *d = dst ;
 13:         const long *s = src ;
 14:         for(i=len/sizeof(len);i>0;--i){
 15:             d[i-1] = s[i-1] ;
 16:         }
 17:     }else{
 18:         char *d = dst ;
 19:         const char *s = src ;
 20:         for(i=len;i>0;--i){
 21:             d[i-1] = s[i-1] ;
 22:         }
 23:     }
 24:     return dst;
 25: }
posted @ 2012-03-03 22:31  Better-zyy  阅读(235)  评论(0编辑  收藏  举报