关于线程:memmove implementation in C,我不明白为什么两个不同的变量会有内存重叠?也就是说,编译器将相同的“公共空间”分配给两个不同的变量,这是正常的情况吗?为什么编译器在这种情况下会使用这个策略?
发布于 2011-02-20 07:54:13
与编译器无关。请考虑以下几点:
int x[100];
memmove(&x[1], &x[0], 99*sizeof(int));发布于 2011-02-20 08:07:49
它实际上并不是关于编译器创建重叠的变量。简单地说,memmove的规范说它必须工作,即使源和目标重叠。如果两者没有重叠的可能,你通常会想要使用memcpy,这通常会更快,但如果它们重叠了,就会给出未定义的行为。
https://stackoverflow.com/questions/5054288
复制相似问题