memmove实现

在参考线程:C中的memmove实现时,我不明白为什么2个不同的变量会有内存重叠?即这是一个正常情况,编译器为2个不同的变量分配相同的“公共空间”,为什么编译器在这种情况下使用这个策略?     
已邀请:
与编译器无关。考虑以下:
int x[100];

memmove(&x[1], &x[0], 99*sizeof(int));
    
这并不是关于编译器创建重叠的变量。简单地说
memmove
的规格说它必须工作,即使源和目的地重叠。如果没有两个重叠的可能性,你通常想要使用
memcpy
,它通常会更快,但如果它们重叠则给出未定义的行为。     

要回复问题请先登录注册