首页 > 其他分享 >C库函数之memcpy的实现

C库函数之memcpy的实现

时间:2023-02-01 21:36:54浏览次数:33  
标签:cnt 字节 sizeof 实现 void int 拷贝 memcpy 库函数


C库函数之memcpy的实现


memcpy的实现方式是当满足四字节对齐时,进行四字节的拷贝,不满足时进行单字节的拷贝。例如拷贝10个字节,循环两次拷贝四字节,在循环两次拷贝一字节。


void mem_memcpy(void* dst, const void* src, unsigned int cnt)
{
char *d = (char*)(void *)dst;
const char *s = src;

while (cnt >= sizeof (int)) {
*(int*)d = *(int*)s;
d += sizeof (int);
s += sizeof (int);
cnt -= sizeof (int);
}
while ((cnt) > 0U){
*d = *s;
d += 1U;
s += 1U;
cnt -= 1U;
}
}

end


标签:cnt,字节,sizeof,实现,void,int,拷贝,memcpy,库函数
From: https://blog.51cto.com/u_15950551/6031858

相关文章

  • STM32使用HAL库实现按键的单击、双击、长按
    STM32使用HAL库实现按键的单击、双击、长按目录​​STM32使用HAL库实现按键的单击、双击、长按​​​​前言​​​​具体思路​​​​工程配置​​​​代码实现​​​​实验......
  • STM32CubeMX | STM32使用HAL库DMA+空闲中断实现串口不定长数据接收
    STM32CubeMX|STM32使用HAL库DMA+空闲中断实现串口不定长数据接收环境:STM32CubeIDESTM32F103RBWIN10HAL库V1.8首先配置串口:开启串口中断:开启DMA接收:配置中断分组:取消自动生......
  • Python实现文件编码转换GB2312、GBK、UTF-8
    Python实现文件编码转换GB2312、GBK、UTF-81、查看文件编码格式importchardetfilename='./flash.c'withopen(filename,'rb')asf:data=f.read()encoding_ty......
  • 利用natapp实现TCP、UDP内网穿透
    利用natapp实现TCP、UDP内网穿透natapp官网:​​https://natapp.cn/​​下载:下载下来其实就只有一个文件:首先在natapp官网上注册一个账号,并实名认证,这一步是必须的!然后去购买......
  • Java使用Scanner实现循环输入
    1publicstaticvoidmain(String[]args){2Scannersc=newScanner(System.in);3List<Integer>list=newArrayList<>();4Stringinput=......
  • github与jenkins相结合实现push代码后自动部署
    首先在settings里面设置  jenkins-token记得设置勾选  至此github设置完成jenkins  credentials:选择私钥复制进去,github上放置公钥  将之前的gith......
  • js实现替换对象(json)格式的键名
    某些场景下,我们拿到的键名与预期的键名不符,这个时候就需要替换键名来得到我们想要的内容letobj=[{id:1,title:'zs'},{id:2,title:'l......
  • 系统操作日志的实现思路
    系统操作日志的实现思路主要问题不在于写日志和表结构设计上。主要问题在识别出哪些数据做了修改。并生成日志。表中数据列众多,且要监控多个表。如果要监控的每个表都去......
  • 关于视频号主页实现一键添加个人微信功能的思路
    ​大家好,我是小悟很多小伙伴私信说想要在视频号里面放置添加个人微信的按钮,但是很遗憾的告诉大家,想要实现这个功能是有条件的,就是需要视频号是企业认证的,个体户或企业都可以......
  • 使用element-ul实现描点导航
    功能为右侧描点导航,点击后内容滚动到指定位置,监听滚动条,右边描点导航高亮效果图:   组件封装PointTags<template><divclass="point-wrap"><el-tabsta......