首页 > 其他 > 详细

memcpy实现

时间:2018-09-16 17:35:50      阅读:203      评论:0      收藏:0      [点我收藏+]

#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实现

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!