您应该区分两种类型的复制:浅复制和深复制。
深复制为整个数组及其所有内容分配新空间(如果它包含引用,则分配新空间来创建具有与复制的值相同的值的实例),而浅复制仅分配与复制的大小相同的空间大批。
例子:
数组A已被分配为仅包含两个可变对象(例如:列表或数组列表)。您是否只想拥有“extern”数组(包含两个引用的数组)的副本,还是想要一份深层副本,该副本还将分配A中包含的两个引用的新实例?
对于第一种情况,例如:
A 是从引用 0x0000AA 开始的数组
ElementOne 从 0x00BBCC 开始
ElementTwo 从 0x00BBFF 开始
如果执行浅复制:
B(新数组)将从引用 0x0000BB 开始,ElementsOne 和 ElementsTwo 将指向旧引用(0x00BBCC、0x00BBFF)。
如果执行深层复制,它不仅会为数组分配新空间,还会分配空间来包含新实例(新列表、新数组列表...)。