[开发资料]

memcpt的实现

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

char * pdst = (char *)dst;
char * psrc = (char *)src;

if (pdst > psrc && pdst < psrc + n)
{
pdst = pdst + n - 1;
psrc = psrc + n - 1;
while (n--)
*pdst-- = *psrc--;
}
else
{
while (n--)
*pdst++ = *psrc++;
}
return dst;
}




在上面按字节拷贝中考虑了拷贝覆盖,连续的一段空间存放数据是从低地址到高地址进行存放。先从源地址读出数据,然后写入到目的地址空间中。目的空间的起始地址如果在源数据空间之内就会出现内存覆盖的情况。
这种情况先从尾部拷贝,避免覆盖数据,不过这种情况也会破坏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 函数用于把资源内存拷贝到目标内存

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

2546

帖子

2

粉丝