[开发资料] memcpt的实现

[复制链接]
1295|9
 楼主| eefas 发表于 2022-9-11 20:34 | 显示全部楼层 |阅读模式
EMC, MCP, rc, ST, ps, pd
简介  这篇文章主要介绍了memcpt的实现以及相关的经验技巧,文章约1444字,浏览量3564,点赞数2,值得参考!
  1. void *my_memcpy_byte(void *dst, const void *src, int n)
  2. {
  3. if (dst == NULL || src == NULL || n <= 0)
  4. return NULL;

  5. char * pdst = (char *)dst;
  6. char * psrc = (char *)src;

  7. if (pdst > psrc && pdst < psrc + n)
  8. {
  9. pdst = pdst + n - 1;
  10. psrc = psrc + n - 1;
  11. while (n--)
  12. *pdst-- = *psrc--;
  13. }
  14. else
  15. {
  16. while (n--)
  17. *pdst++ = *psrc++;
  18. }
  19. return dst;
  20. }




在上面按字节拷贝中考虑了拷贝覆盖,连续的一段空间存放数据是从低地址到高地址进行存放。先从源地址读出数据,然后写入到目的地址空间中。目的空间的起始地址如果在源数据空间之内就会出现内存覆盖的情况。
这种情况先从尾部拷贝,避免覆盖数据,不过这种情况也会破坏src空间数据,在src前使用了const关键字,也就是空间只读,在函数内部不修改src空间数据。
而标准库的memcpy并没有将写覆盖认为是内存拷贝,而是内存移动。memcpy的src代表一块内存空间,并用const关键字修饰,并不希望内存块被破坏。


typeof 发表于 2022-10-1 12:55 | 显示全部楼层
memcpy指的是C和C++使用的内存拷贝函数  
bartonalfred 发表于 2022-10-1 14:24 | 显示全部楼层
memcpy 函数用于把资源内存(src所指向的内存区域) 拷贝到目标内存(dest所指向的内存区域)
sheflynn 发表于 2022-10-1 15:05 | 显示全部楼层
memcpy函数用法?               
lzmm 发表于 2022-10-1 15:38 | 显示全部楼层
memcpy在什么情况下会失败  
Bowclad 发表于 2022-10-4 18:57 | 显示全部楼层
memcpy函数怎么用啊?
AloneKaven 发表于 2022-10-5 20:19 | 显示全部楼层
是拷贝函数吧
LLGTR 发表于 2022-10-6 21:34 | 显示全部楼层
看标题进来的,以为是什么新鲜的函数,结果是打错字了。
onlycook 发表于 2022-10-8 10:52 来自手机 | 显示全部楼层
这个函数是被你打错了吧
AloneKaven 发表于 2022-11-4 21:56 | 显示全部楼层
memcpy 函数用于把资源内存拷贝到目标内存
您需要登录后才可以回帖 登录 | 注册

本版积分规则

98

主题

3149

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部