深拷贝和浅拷贝之间有什么区别?

深拷贝和浅拷贝之间有什么区别?


浅拷贝重复尽可能少。 集合的浅表副本是集合结构的副本,而不是元素。 有了浅拷贝,两个集合现在可以共享单个元素。

深拷贝复制一切。 集合的深层副本是两个集合,其中原始集合中的所有元素都是重复的。


宽度与深度; 以你的对象作为根节点的引用树来思考。

浅:

变量A和B指的是内存的不同区域,当B被分配给A时,这两个变量指的是相同的内存区域。 之后对其中任一内容的修改会立即反映在其他内容中,因为它们共享内容。

深:

变量A和B指的是内存的不同区域,当B分配给A时,A指向的内存区域中的值被复制到B指向的内存区域。 后来对内容的修改仍然是A或B所独有的; 内容不共享。


总之,这取决于什么点。 在浅拷贝中,对象B指向对象A在内存中的位置。 在深拷贝中,对象A的内存位置中的所有内容都被复制到对象B的内存位置。

这篇wiki文章有一个很棒的图表。

http://en.wikipedia.org/wiki/Object_copy

链接地址: http://www.djcxy.com/p/2237.html

上一篇: What is the difference between a deep copy and a shallow copy?

下一篇: Why is this totaling operation faster on the stack than the heap?