博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
避免内存重叠memmove()性能
阅读量:4927 次
发布时间:2019-06-11

本文共 687 字,大约阅读时间需要 2 分钟。

#include 
#include
using namespace std;void* memmove(void *dst, const void *src, size_t count){ // 容错处理 if (dst == NULL || src == NULL){ return NULL; } unsigned char *pdst = (unsigned char *)dst; const unsigned char *psrc = (const unsigned char *)src; //推断内存是否重叠 bool flag1 = (pdst >= psrc && pdst < psrc + count); bool flag2 = (psrc >= pdst && psrc < pdst + count); if (flag1 || flag2){ // 倒序拷贝 while (count){ *(pdst + count - 1) = *(psrc + count - 1); count--; }//while } else{ // 拷贝 while (count--){ *pdst = *psrc; pdst++; psrc++; }//while } return dst;}

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/bhlsheji/p/4906167.html

你可能感兴趣的文章
字符串处理的两个小技巧
查看>>
GoLand配置数据库、远程host以及远程调试
查看>>
第一周学习进度条
查看>>
java:一个项目的开发过程(转)
查看>>
express框架学习笔记
查看>>
记录一个css的综合运用
查看>>
cygwin daemon
查看>>
瀑布流
查看>>
前端规范
查看>>
Linux与Windows API对比
查看>>
CrossOriginFilter
查看>>
sequelize migration delete enum col and want that col back occur error
查看>>
使用sessionStorage获取值和设置值
查看>>
Nginx 反向代理的正确配置
查看>>
软件工程网络15个人作业3——案例分析
查看>>
hahacvf
查看>>
PV操作
查看>>
URL编码
查看>>
IOS 键盘的显示与关闭
查看>>
Oracle CASE WHEN 用法介绍
查看>>