memcpy 與 memmove 實現

來源:互聯網
上載者:User

void* Memcpy(void *p, void *p1,size_t count)
{
    assert(p && p1); 
    char *pDest = static_cast<char*>(p);
 char *pSrt = static_cast<char*>(p1);

 while(count--)
 {
  *pDest++ = *pSrt++ ;
 }
 

 return pDest;
}

void *Memmove(void *Dst, const void*Src,size_t count)
{
 assert(Dst && Src);
 void* pDst = Dst;

 if (Dst<Src && (char*)Dst > (char*)Src + count)
 {
  while(count--)
  {
   *(char*)Dst = *(char*)Src;
   Dst = (char*)Dst + 1;
   Src = (char*)Src + 1;
  }
 }
 else
 {
      Dst = (char*)Dst + count - 1;
   Src = (char*)Src + count - 1;
   while(count--)
   {
      *(char*)Dst = *(char*)Src;
      Dst = (char*)Dst -1 ;
      Src = (char*)Src -1 ;
   }
 }

 return pDst;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.