memcpy内存拷贝函数的介绍和模拟实现

news/2024/11/14 8:09:54/

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>


//memcpy内存拷贝函数
//void* memcpy(void* destination, const void* source, size_t num)
//memcpy负责拷贝两块独立空间中的数据

int main()
{
    int arr1[] = { 1,2,3,4,5,6,7 };
    int arr2[10] = { 0 };
    memcpy(arr2, arr1, 28);

    float arr3[5] = { 1.0, 2.5, 3.0, 5.0, 6.0 };
    float arr4[10] = { 0.0 };
    memcpy(arr4, arr3, 20);

    return 0;
}

//memcpy的模拟实现
#include <assert.h>
void* my_memcpy(void* dest, const void* src, size_t num)
{
    assert(dest && src);
    void* ret = dest;
    while (num--)
    {
        *(char*)dest = *(char*)src;//一个字节一个字节拷贝
        dest = (char*)dest + 1;
        src = (char*)src + 1;
    }
    return ret;
}
int main()
{
    int arr1[] = { 1,2,3,4,5,6,7 };
    int arr2[10] = { 0 };
    my_memcpy(arr2, arr1, 28);

    return 0;
}

//如果
/*
    int arr1[] = { 1,2,3,4,5,6,7,8,9,10 };
    //将1,2,3,4,5的数据拷贝到3,4,5,6,7上
    //        变成 1,2,1,2,3,4,5,8,9,10
    my_memcpy(arr1+2, arr1, 20);
*/
//重叠内存的拷贝,是怎么实现的呢?
//这时候要用到memmove


http://www.ppmy.cn/news/1546613.html

相关文章

Unity资源打包Addressable资源保存在项目中

怎么打包先看“Unity资源打包Addressable AA包” 其中遗留一个问题&#xff0c;下载下来的资源被保存在C盘中了&#xff0c;可不可以保存在项目中呢&#xff1f;可以。 新建了一个项目&#xff0c;路径与“Unity资源打包Addressable AA包”都不相同了 1.创建资源缓存路径 在…

【大数据学习 | HBASE】hbase的读数据流程与hbase读取数据

1. hbase的读数据流程 在解析读取流程之前我们还需要知道两个功能性的组件和HFIle的格式信息 HFILE 存储在hdfs中的hbase文件&#xff0c;这个文件中会存在hbase中的数据以kv类型显示&#xff0c;同时还会存在hbase的元数据信息&#xff0c;包括整个hfile文件的索引大小&…

作用域有哪些分别有什么区别呢

1.局部作用域&#xff08;Function - level Scope&#xff09; 定义与概念 在 JavaScript 中&#xff0c;函数内部定义的变量拥有局部作用域。这意味着这些变量只能在函数内部被访问和修改&#xff0c;函数外部无法直接获取它们的值。这种作用域机制是基于函数来划分的&#x…

Jenkins常用插件

关于代码插件 Branch API Git client Git Parameter Plug-In Git Git Push GitLab Git server Subversion Workspace Cleaner Subversion Plug-in 关于认证插件 Caffeine API Credentials 关于k8s插件 Kubernetes Kubernetes :: Pipeline :: DevOps Steps Kubernetes CLI Kub…

论文阅读《机器人状态估计中的李群》

目录 摘要1 介绍2 微李理论2.1 李群2.2 group actions2.3 正切空间和李代数 摘要 李群是一个古老的数学抽象对象&#xff0c;可以追溯到19世纪&#xff0c;当时数学家 Sophus Lie奠定了连续变换群理论的基础。多年后&#xff0c;它的影响已经蔓延到科学和技术的各个领域。在机…

Linux后台运行jar包,nohup、>、

nohup&#xff1a;no hung up 的缩写&#xff0c;意思是不挂断&#xff0c;主要作用就是可以在后台运行&#xff0c;并可以选择将日志输出到指定文件。在默认情况下&#xff08;非重定向时&#xff09;&#xff0c;会输出一个名叫 nohup.out 的文件到当前工作目录下&#xff0c…

高级java每日一道面试题-2024年11月01日-Redis篇-Redis支持的数据类型有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: Redis支持的数据类型有哪些? 我回答: 在 Java 高级面试中&#xff0c;Redis 的数据类型是一个常见的考点。Redis 是一个高性能的键值存储系统&#xff0c;支持多种数据类型&#xff0c;每种数据类型都有其特定的用途和操作方法。以…

el-date-picker picker-options属性中disabledDate设置时间的禁用和启用,并且支持到时分秒的禁用和启用

默认picker-options 是配置的对象&#xff0c;如果代码中只存在一个开始时间或者一个结束时间&#xff0c;可以直接设置成对象进行配置我这里的应用场景是在表格中存在多个时间的配置项 使用到了dayjs作为时间判断&#xff0c;也可以自行根据js来实现判断需要将picker-options …