首页 » 信息技术 »

memcpy和memmove的异同

2020年12月18日 / 3次阅读
CC++

C代码中的内存拷贝,可以用memcpy,也可以用memmove,这两个函数有一个重要的区别,即不同的应用场景。

memcpy和memmove的定义如下:

void *memcpy(void *dest, const void *src, size_t n)
void *memmove(void *dest, const void *src, size_t n)

都是从src拷贝n个byte到dest。

区别在于,src和dest在n的限定下,是否有overlap的区域!

memory overlap while copy

memory overlap while copy

memcpy一般不能处理这种overlap,它定位速度,程序员如果能够确定src和dest没有overlap,用memcpy。

memmove可以很好的处理这种overlap,它定位安全,如果程序员不能确定是否有overlap,用memmove。

这两个函数都在<stdlib.h>中定义。

memmove的实现方式,各版本可能不一样。有的使用临时内存,有的在判断src和dest是否有overlap,有或没有的处理方式会有差异。

本文链接:https://www.maixj.net/ict/memcpy-memmove-24221

相关文章

留言区


前一篇:
后一篇:
-->只要几分钟回答问卷,就能轻松赚现金!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

go to top