什么是串行复制?它与深拷贝和浅拷贝有什么不同吗?
根据Duff's device下的维基条目,传统实现方式如下:
do { //count > 0 assumed
*to = *from++; //Note that the 'to' pointer is NOT incremented
} while(--count > 0);
然后它会做一个注释,内容如下:
请注意,由于Duff在复制到单个内存映射输出寄存器,因此未对
to
进行递增操作。
我不太理解这个注释的意思。
如果没有递增to
指针,那么循环的意义是什么?为什么它被实现成这样:
*to = from[count-1]; //does it not do the same thing?
我怀疑这与“串行”复制的定义有关。
我们如何为
to
分配内存,以便循环会产生一些差异?