一种另类的memcpy写法(在switch里写入一个dowhile)

void *  mymemcpy(  void *  dest,  const   void *  src, size_t count )
{
   
char *  d  =  ( char * )dest;
   
const   char *  s  =  ( const   char * )src;
   
int  n  =  (count  +   7 /   8 //  count > 0 assumed

   
switch ( count  &   7  )
    
{
    
case   0 :   do   {   * d ++   =   * s ++ ;
   
case   7 :         * d ++   =   * s ++ ;
   
case   6 :         * d ++   =   * s ++ ;
   
case   5 :         * d ++   =   * s ++ ;
   
case   4 :         * d ++   =   * s ++ ;
   
case   3 :         * d ++   =   * s ++ ;
   
case   2 :         * d ++   =   * s ++ ;
   
case   1 :         * d ++   =   * s ++ ;
               }
  while  ( -- >   0 );
    }


   
return  dest;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: memcpy按照1个字节写入的好处是可以确保数据的精确复制,不会出现数据丢失或损坏的情况。同时,按照1个字节写入可以确保数据的字节顺序正确,不会出现字节序反转的问题。此外,按照1个字节写入可以适用于不同的架构和操作系统,保证代码的可移植性和兼容性。 ### 回答2: memcpy按照1个字节写入的好处是可以实现精确地复制任意长度的数据。其使用一个字节一个字节地写入目标内存区域,可以确保每个字节都被准确地复制到目标位置。这对于复制小于一个字节的数据尤为重要,比如对于位图或者二进制数据。这种精确的复制可以保证复制后的数据与原始数据完全一致,从而避免了数据丢失或错误的情况。 此外,memcpy按照1个字节写入的方式还可以保证数据的内存对齐。在某些架构中,对于特定类型的数据(比如整型、浮点型),要求其地址始终处于某个特定的倍数上,这被称为内存对齐。如果数据没有正确对齐,可能会导致访问数据时的性能下降,甚至导致程序崩溃。通过按照1个字节写入的方式,memcpy可以自动保证数据的正确对齐,从而提高程序的执行效率。 另外,memcpy按照1个字节写入的方式也使得其更加灵活和通用。无论是复制小的数据块还是大的数据块,都可以使用memcpy来进行复制操作。这种通用性和灵活性使得memcpy成为了编写高效且可靠的代码中常用的函数之一。 总之,memcpy按照1个字节写入的好处包括保证精确复制数据、确保数据的内存对齐、增加代码的灵活性与通用性等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值