深拷贝和浅拷贝之间有什么区别?
深拷贝和浅拷贝之间有什么区别?
浅拷贝重复尽可能少。 集合的浅表副本是集合结构的副本,而不是元素。 有了浅拷贝,两个集合现在可以共享单个元素。
深拷贝复制一切。 集合的深层副本是两个集合,其中原始集合中的所有元素都是重复的。
宽度与深度; 以你的对象作为根节点的引用树来思考。
浅:
变量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?