首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >memmove实现

memmove实现
EN

Stack Overflow用户
提问于 2011-02-20 07:51:28
回答 2查看 1.2K关注 0票数 2

关于线程:memmove implementation in C,我不明白为什么两个不同的变量会有内存重叠?也就是说,编译器将相同的“公共空间”分配给两个不同的变量,这是正常的情况吗?为什么编译器在这种情况下会使用这个策略?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-20 07:54:13

与编译器无关。请考虑以下几点:

代码语言:javascript
复制
int x[100];

memmove(&x[1], &x[0], 99*sizeof(int));
票数 10
EN

Stack Overflow用户

发布于 2011-02-20 08:07:49

它实际上并不是关于编译器创建重叠的变量。简单地说,memmove的规范说它必须工作,即使源和目标重叠。如果两者没有重叠的可能,你通常会想要使用memcpy,这通常会更快,但如果它们重叠了,就会给出未定义的行为。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5054288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档