码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • memmove内存拷贝函数


    目录

    一、memmove内存拷贝函数

    二、memmove与memcpy的区别

    三、模拟实现memmove函数


    一、memmove内存拷贝函数

    1.头文件:string.h

    2.函数原型:void *(void* destination , const void* source , size_t num)

    3.函数功能:将源地址空间中的num个字节拷贝到目标地址空间中

    4.参数分析:

    destination是目标地址空间

    source是源地址空间

    num是需要拷贝的字节数

    5.实例代码:

    1. char str1[] = "123456789";
    2. char str2[] = "abcdefg";
    3. memmove(str1 + 4, str2, 5);
    4. printf("%s\n", str1);

    1. int nums1[9] = { 1,2,3,4,5,6,7,8,9 };
    2. int nums2[6] = { 10,11,12,13,14,15 };
    3. memmove(nums1, nums2, sizeof(int) * 6);
    4. for (int i = 0; i < 9; i++)
    5. {
    6. printf("%d ", nums1[i]);
    7. }

    二、memmove与memcpy的区别

    memcpy函数详解见:《memcpy内存拷贝函数》​​​​​​

     最大的区别是:memmove函数可以进行内存重叠拷贝,而memcpy不可以

     

    三、模拟实现memmove函数

    1. void* my_memcpy(void* destination, const void* source, size_t num)
    2. {
    3. if (destination == NULL || source == NULL)
    4. {
    5. return NULL;
    6. }
    7. if (source < destination)//从后向前拷贝
    8. {
    9. for (int i = num - 1; i >= 0; i--)
    10. {
    11. *((char*)destination + i) = *((char*)source + i);
    12. }
    13. }
    14. else//从前向后拷贝
    15. {
    16. for (int i = 0; i < num; i++)
    17. {
    18. *(char*)destination = *(char*)source;
    19. ((char*)destination)++;
    20. ((char*)source)++;
    21. }
    22. }
    23. }
    24. ————————————————
    25. 版权声明:本文为CSDN博主「南林yan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    26. 原文链接:https://blog.csdn.net/2301_76197086/article/details/133876321
  • 相关阅读:
    Flow深入浅出系列之在ViewModels中使用Kotlin Flows
    写个续集,填坑来了!关于“Thread.sleep(0)这一行‘看似无用’的代码”里面留下的坑。
    干货 | BitSail Connector 开发详解系列一:Source
    关系数据库:mysql
    【PG】PostgreSQL 预写日志(WAL)、checkpoint、LSN
    UEC++ 多线程(一) FRunnable
    【小程序从0到1】小程序常用组件一览
    服务端技术方案应该具有哪些章节
    操作系统-(第一章上)
    携手低代码平台公司,创造高效率办公!
  • 原文地址:https://blog.csdn.net/2301_76197086/article/details/134005827
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号