存档

文章标签 ‘c’

memmove函数真的没有问题了?

2015年11月18日 791 人阅读 没有评论

1、思考

首先思考一个问题:“不是已经有了memcpy了码?为什么还要提供memmove?”

2、解惑

通过man手册我们可以发现memcpy和memmove的原型都是void * (void *dest, const void *src, size_t n);那么它们有什么区别,通过查看memcpy和memmove的源码我们发现memcpy是从低地址往高地址逐字节的拷贝,而memmove则会比较一下dest和src地址的大小,当src地址大于dest时memmove的行为和memcpy的行为是一致的,当dest地址大于src时,memmove则是从高地址往低地址逐字节的拷贝,从而避免了当dest地址大于src地址且拷贝区域存在交叉的情况下,dest最后几个字节的值有误的情况。

阅读全文…

分类: c/c++, linux, 面试 标签: ,