memcpy
来源:互联网 发布:高级研修班 知乎 编辑:程序博客网 时间:2024/06/07 06:26
//// Created by yudw on 2017/8/6.//#pragma once#include <iostream>#define debug_namespace yudw{ // 注意当内存有重叠时,src部分会被覆盖 void* memcpy(void *dst, const void* src, size_t size) { if(dst == nullptr || src == nullptr) { return nullptr; } char *pdst = static_cast<char*>(dst); const char *psrc = static_cast<const char*>(src); // 1.内存无重叠 // [dst + 0, dst + size -1] , [src + 0, src + size -1], [dst + 0, dst + size -1] if(pdst + size <= src || pdst >= psrc + size) {#ifdef debug_ std::cout<<"no cover:";#endif while(size--) { *pdst++ = *psrc++; } } else // 2.内存有重叠 { if(pdst < psrc) // 2.1 dst 在左,有部分重叠,从前往后直接拷贝就行 {#ifdef debug_ std::cout<<"left cover:";#endif while(size--) { *pdst++ = *psrc++; } } else // 2.2 dst 在右侧, 有部分重叠,从后向前拷贝,src重复部分会被dst覆盖 {#ifdef debug_ std::cout<<"right cover:";#endif while(size--) { *(pdst + size) = *(psrc + size); } } } return dst; }}
阅读全文
1 0
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- memcpy
- JVM内部架构
- 敏捷开发的三个流程
- 伽卡他卡学生端关闭
- epub电子书xml添加下着重号样式(二) 样式直接拿走
- 小白成长记——Java基础之数据类型
- memcpy
- spring mvc架构
- 数据挖掘一般流程(数据清洗,特征提取,建模,调参)
- 如何使用JavaScript在静态页面插入PDF文件(附带效果图)?
- Ignatius and the Princess IV
- layer.open组件获取弹出层页面变量、函数
- 复杂clone
- 如何在Debian和Ubuntu下重新打包Deb文件
- 框架学习系列 mybatis 第八篇 mybatis开发dao的方式