实现一个memcpy函数

主要考虑:源内存地址和目的地址是否有重叠。若目的首地址位于源地址范围之内,拷贝应从高地址到低地址。否则无所谓。
代码实现:

#include "stdafx.h"
#include <iostream>using namespace std;char *my_memcpy(char *dst, const char *src, size_t len)
{//check the addressif (dst == nullptr || src == nullptr)return nullptr;char *ret = dst;//copy from low_address of srcif (dst <= src || dst >= src + len){while (len--){*dst++ = *src++;}}//copy from high_address of srcelse{src = src + len - 1;dst = dst + len - 1;while (len--){*dst-- = *src--;}}//return dst addressreturn ret;
}int main()
{char a[20] = { "\0" };char b[20] = { "hello" };my_memcpy(a, b, 3);cout << a << endl;return 0;
}//output
hel

上面实现是基于覆盖型拷贝,控制源地址数据能够正确拷贝到目的地址。题目还可以搞的很复杂,不能覆盖。只给空闲地址拷贝数据,分情况讨论即可。

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. SLAM学习,小白入门到殿堂级大牛资料整理
  2. 用好ASP.NET 2.0的URL映射
  3. nacos 配置动态刷新_nacos配置中心修改后刷新
  4. Java遍历Map对象的四种方法
  5. linux内核网络协议栈--监控和调优:接收数据(十五)
  6. java中集合的区别_Java中的集合与集合之间的区别
  7. ocid oracle,Oracle数据库基础:新手推荐
  8. pytorch 实现 LSTM AutoEncoder 与案例
  9. zabbix之解决中文乱码
  10. MATLAB图像处理之二值化以及灰度处理
  11. 2018最新Web前端经典面试试题及答案
  12. blender风格化草地
  13. matlab软件topsis分析,基于AHP—TOPSIS的渗透测试工具的综合评价方法与流程
  14. 计算机考研408每日一题 day19
  15. 做到心云社客这三点,你也拥有很多网络赚钱机会
  16. html如何添加竖虚线,在word中添加竖虚线的方法
  17. 经典圣诞老人题----同步与互斥
  18. 神经网络中验证集、训练集和测试集
  19. python解析sql字段血缘_数据仓库内表格的血缘关系追溯的方法和装置与流程
  20. 聚合支付机构备案情况分析(截至22年1月27日)

热门文章

  1. JDBC 连接 PostgreSQL
  2. Kafka Consumer Group和Consumer Rebalance机制
  3. kafka管理界面 kafka-eagle
  4. react-native在android上字重显示问题
  5. 15个给照片找乐子的网站
  6. 亿道信息丨12.2英寸二合一笔记本丨加固型笔记本丨三防笔记本
  7. 微软在线文档库(docs.microsoft.com),MVP Challenge
  8. templates文件夹php,phpcms V9 默认templates主题模板文件目录结构介绍
  9. 两句话轻松掌握python最难知识点——元类
  10. 一生一品项目管理系统软件开发文档