码迷,mamicode.com
首页 > 其他好文 > 详细

memcpy实现

时间:2018-09-16 17:38:49      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:nbsp   ret   tmp   assert   拷贝   sig   space   %s   while   

#include <iostream>

using namespace std;

#include <assert.h>

void* myMemcpy(void* dst, const void* src, size_t count);

int main(void)

{

  int test[4] = {1,2,3,4};

  int* src = test;

  int* dst = NULL;

  dst = (int*)malloc(sizeof(int)*4);

  if(NULL == dst)

  {

    cout << "malloc memory failes" << endl;

    return 0;

  }

  for(int i=0; i<4;i++)

  {

    *(dst+i)=0;

  }

  myMemcpy(dst, src, 4);

  for(int i=0; i<4; i++)

  {

    cout << *(dst+i) << endl;

  }

  return 0;

}

void* myMemcpy(void* dst, const void* src, size_t count)

{

  assert(dst != NULL && src != NULL);

  int nuchunks = count/sizeof(dst);//按CPU位宽拷贝

  int slices = count%sizeof(dst);//剩余的按字节拷贝

  (unsigned long*)tmpDst = (unsigned long*)dst;

  (unsigned long*)tmpSrc = (unsigned log*)src;

  while(nuchunks--)

  {

    *tmpDst++ = *tmpSrc++;

  }

  while(slices--)

  {

    *((char*)tmpDst++) = *((char*)tmpSrc++);

  }

  return (void*)dst;

}

 

memcpy实现

标签:nbsp   ret   tmp   assert   拷贝   sig   space   %s   while   

原文地址:https://www.cnblogs.com/embeddedking/p/9656642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!