1.按1个字节拷贝
(1)不要直接使用形参,要转换成char*
(2)目标地址要实现保存
(3)要考虑源和目标内存重叠的情况

void * mymemcpy(void *dest, const void *src, size_t count)
{if (dest == NULL || src == NULL)return NULL;char *pdest = static_cast <char*>(dest);const char *psrc  = static_cast <const char*>(psrc);int n = count;if (pdest > psrc && pdest < psrc+count){for (size_t i=n-1; i != -1; --i){pdest[i] = psrc[i];}}else{for (size_t i= 0; i < n; i++){pdest[i] = psrc[i];}}return dest;
}

2.按4个字节拷贝
(1)转成int*,按照每次4个字节来拷贝,不足四个字节的按一个字节拷贝

void *mymemcpy(void *dst,const void *src,size_t num)
{assert((dst!=NULL)&&(src!=NULL));int wordnum = num/4;//计算有多少个32位,按4字节拷贝int slice = num%4;//剩余的按字节拷贝int * pintsrc = (int *)src;int * pintdst = (int *)dst;while(wordnum--)*pintdst++ = *pintsrc++;while (slice--)*((char *)pintdst++) =*((char *)pintsrc++);return dst;
}
一个伟大公司的机会

转载于:https://www.cnblogs.com/wanghuaijun/p/11559852.html

memcpy函数的实现相关推荐

  1. memcpy()函数

    1.memcpy()函数的实现 void *memcpy(void *dest, const void *src, size_t n); 从源src所指的内存地址的起始位置开始拷贝n个字节到目标des ...

  2. 最保险的函数间数组作为参数值传递与返回方法,用memcpy函数

    举例代码如下: void mycvCalcHist(IplImage *img,double out_hist[256]) {int i=0, j=0; double temp1=0;int temp ...

  3. 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug

    0.11内核rd_load@ramdisk.c中memcpy函数好像有bug,如: #define memcpy(dst,src,n) \     __asm__("cld;rep;movs ...

  4. c语言内存拷贝 memcpy()函数

    需包含头文件:C 标准库 - <string.h> 文章目录 描述 声明 参数 返回值 实例1 实例2 实例3:覆盖原有部分数据 描述 C 库函数 void *memcpy(void *s ...

  5. c语言memcopy_C语言中memcpy 函数的用法详解

    C语言中memcpy 函数的用法详解 memcpy(内存拷贝函数) c和c++使用的内存拷贝函数,memcpy函数的功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址 ...

  6. memcpy函数_[PART][BUG][MSVCRT][C][CCF NOI1097] 关于memcpy的坑

    [Incompleted] CCF NOI1097 试题,本人的源码: Ubuntu Pastebin​paste.ubuntu.com Ubuntu Pastebin Ubuntu Pastebin ...

  7. c语言中memcpy函数_带有示例的C中的memcpy()函数

    c语言中memcpy函数 memcpy()函数 (memcpy() function) memcpy() is a library function, which is declared in the ...

  8. C语言 memcpy函数(增加dst 从第一字节拷贝判断)的内部简单实现方式

    刚学习C语言编程的时候,感觉C内部函数深不可测,通过代码很难实现.后来经常慢慢的学习过程,理解了部分C函数的实现方法,下面简单说下memcpy函数的内部实现方式之一. 简单概括内存拷贝的含义:字节对齐 ...

  9. 让你提前认识软件开发(8):memset()与memcpy()函数

    第1部分 重新认识C语言 memset()与memcpy()函数 软件项目中的代码,少则数千行,多则上万行,但并非无规律可循.阅读了那么多代码之后,我发现有两个函数出现的频率很高,那就是memset( ...

  10. memcpy函数(多积累进大厂)

    作者:旧梦拾遗186 专栏:C语言编程----小比特成长日记 每日励志: 要想在人生中获胜,就要比别人更早地努力.而要及早努力,需要及早地为自己的人生做出规划,做好人生定位 前言: 今天小编带大家认识 ...

最新文章

  1. python画抛物线_如何使用python的matplotlib模块画抛物线
  2. editplus配置 linux shell 语法高亮 自动补全
  3. asp.net源碼坊論壇上線
  4. 如何在Raspberry Pi上设置两因素身份验证
  5. python3 爬虫第二步Selenium 使用简单的方式抓取复杂的页面信息
  6. tar (child): lbzip2: Cannot exec: No such file or directory 解决方法
  7. 使用com.alibaba.fastjson.JSONObject构造简单的JSON数据
  8. git简单使用(二)---远程仓库的建立与远程库的克隆
  9. ideal 本地jar依赖_通过 YARN 的资源本地化技术减少 Flink 在 YARN 上的部署时间
  10. 昨天,美团程序员的年终奖金可能没了!
  11. 天翼校园客户端拨号服务器无响应,天翼校园客户端问题总结及解决办法
  12. 启动startUML的时候报错“Exception EOleSysError in module StarUML.exe at 000AD559.
  13. 做数据分析,别再乱用RFM模型了!
  14. DNS、NS、DDNS
  15. 【软考 系统架构设计师】软件工程⑥ 软件系统建模
  16. VScode提交Git代码总是要输入账号和密码?
  17. 红米4鸿蒙系统刷机包,小米 红米4 高配版获取Root权限服务含精简系统方案
  18. Unity3D 自由视角代码之解析
  19. JavaScript工具函数宝典(内含95个函数)
  20. 1124——Vue+SpringBoot+Mybatis的简单员工管理项目

热门文章

  1. 【阿里妈妈营销科学系列】第二篇:消费者行为分析
  2. 哈弗f5i潮配置参数_10万元起售的潮人新玩法,哈弗F5国潮版购车手册
  3. 更改盘符不成功_酷小二资讯:天猫店铺转让后可以更改类目和店铺名吗?
  4. matlab中方差直方图,如何规范直方图在MATLAB?
  5. PAT_B_1026_Java(15分)
  6. 游戏必备组件有哪些_面试必备:2019Vue经典面试题总结(含答案)
  7. matlab png转02,matlab把图片pgm格式转换成png格式
  8. CF思维联系--CodeForces - 218C E - Ice Skating (并查集)
  9. 数学--数论--最小公倍数+最大公约数
  10. 【精选】uboot/linux/qt/busybox/opengl/yaffs/lzop/glibc源码下载地址