当前位置: 首页 > news >正文

深度剖析 string —— memcpy memmove

系列文章目录

深度剖析:strcat & strncat
深度剖析:strchr & strstr
深度剖析:strcmp & strncmp
深度剖析:strcpy & strncpy
深度剖析:strlen & strtok
深度剖析:memcpy & memmove
深度剖析:memset & memcmp


文章目录

  • 系列文章目录
  • 前言
  • 一、memcpy
    • 1.调用结构
    • 2.使用详解
    • 3.源码剖析
  • 二、memmove
    • 1.调用结构
    • 2.使用详解
    • 3.源码剖析

前言

库函数string是我们经常使用也是非常重要的代码,我将会对常用的函数的用法和实现原理进行深度剖析


一、memcpy

1.调用结构

void*memcpy(void*dest,constvoid*src,size_tn);

2.使用详解

memcpy:从 src 复制 count 个字节到 dest

原理详解:

  1. 内存复制一个一个字节拷贝
  2. 将每个字节在内存中存储的值进行拷贝
  3. 不再局限于字符串的拷贝

3.源码剖析

void*Memcpy(void*dest,constvoid*src,size_tcount){//内存复制:从 src 复制 count 个字节到 destassert(dest&&src);char*start=dest;//记录起始位置的地址while(count--){//拷贝的字节数*(char*)dest=*(char*)src;//一个字节一个字节进行拷贝dest=(char*)dest+1;src=(char*)src+1;}returnstart;//返回起始位置的地址}

二、memmove

1.调用结构

void*memmove(void*destination,constvoid*source,size_tnum);

2.使用详解

memmove:从 src 复制 count 个字节到 dest

原理详解:

  1. 与memcpy的差别就是memmove函数处理的源内存块和目标内存块是可以重叠的
  2. 如果源空间和目标空间出现重叠,就得使用memmove函数处理

3.源码剖析

void*Memmove(void*dest,void*src,intcount){//内存复制:从 src 复制 count 个字节到 destassert(dest&&src);//防止传入空指针char*start=dest;if(dest<src){//前->后while(count--){*(char*)dest=*(char*)src;dest=(char*)dest+1;src=(char*)src+1;}}else{//后->前while(count--){*((char*)dest+count)=*((char*)src+count);}}returnstart;}
http://www.jsqmd.com/news/1387444/

相关文章:

  • 芜湖市南陵县OEM白标贴牌GEO服务商怎么选?2026年靠谱机构推荐与避坑指南 - 科技快讯
  • 手把手移植FreeRTOS到GD32F470:从原理到实战避坑指南
  • AI电销机器人主流服务商横向测评六行业落地案例选购指南 - 米諾
  • 2026泉州洛江区楼顶漏水避坑指南,本地老牌公司,质保可查 - 企业资讯
  • 【预测模型-ELAMN预测】基于蚁群算法优化ELMAN神经网络实现数据回归预测matlab代码
  • 福州网站建设公司哪家好?避坑指南与深度测评让你少走弯路
  • 2026青岛黄岛区楼顶漏水避坑指南,本地老牌公司,质保可查 - 企业资讯
  • Web3 RPC层完全指南:Ethermint-archive与以太坊工具链无缝对接
  • 唐山车灯不亮怎么解决?20 年老店教你一次性根治灯光隐患 - 米諾
  • MobaXterm中文版终极指南:一站式Windows远程开发工具快速配置
  • Open2Share vs 传统分享方式:效率提升300%的实测对比
  • OPD-Evolver: Cultivating Holistic Agent Evolver via On-Policy Distillation 论文笔记
  • 告别在线卡顿!3步搞定国家中小学智慧教育平台电子课本永久保存方案
  • 工业模拟测量与控制技术详解:09 模拟世界与数字通信的桥梁
  • Boss Show Time:招聘平台时间显示插件,让你的求职不再盲目
  • 图片发布:既然标题说了全套,建议你发的时候用拼图或左右滑动多图,把不同类型(壁纸、头像、表情包)分类展示,让粉丝清晰看到“确实什么都有”,收藏率更高。 - 时时资讯
  • 【集合】框架
  • 一键永久保存微信聊天记录:WeChatMsg高效备份与智能分析全攻略
  • cpp多线程\进程学习
  • 2026济南天桥区楼顶漏水避坑指南,本地老牌公司,质保可查 - 企业资讯
  • Twitch CLI mock-api功能详解:本地开发环境搭建指南
  • 【预测模型-ELAMN预测】基于哈里斯鹰算法优化ELMAN神经网络实现数据回归预测matlab代码
  • 专业公司网站建设方案书定制与企业数字化转型指南:从策划到上线的全链路解析
  • 深度剖析 —— 预处理
  • 3步解决方案:如何用KVM虚拟化技术让普通PC运行macOS开发环境
  • 高空幕墙清洗机器人找哪家:【凌度智能】售后完善 - 松梢月冷
  • 2026福州鼓楼区楼顶漏水避坑指南,本地老牌公司,质保可查 - 专业防水施工
  • 5个关键问题:如何通过COLMAP与CloudCompare实现专业级点云分析与可视化?
  • 第6章:移动端开发:01-移动开发体检预约
  • 微信聊天记录永久保存指南:三步搞定你的数字记忆管理