深拷貝和淺拷貝

深拷貝,deep copy
淺拷貝,shallow copy指針

舉個例子來講,會比較好理解一些。
好比賦值操做:a = b。內存

  • 把b的值複製一份給a。這就叫作淺拷貝。實際上,咱們最經常使用的賦值操做都是淺拷貝。
  • 咱們知道,值b在內存中,除了保存了自己的值以外,還有保存這個值所須要的其餘資源,好比堆、棧,或者是其餘關於這個值的一些信息。
    在賦值操做的時候,同時把b所須要的資源也一同複製一份給a,說白了,就是b所須要的資源,再整一套出來用來存a。這就是深度複製。

簡單的來說,淺拷貝只複製了值;深拷貝,除了複製了值,還把存儲這個值所須要的資源也複製了一份。
深拷貝和淺拷貝的區別相似於指針和引用的區別。引用僅僅是指針的別名,指向的仍是原來指針所指向的地方;指針則是從新分配了地址來存儲新的內容。這個新的內容和久的內容是如出一轍的。資源

相關文章
相關標籤/搜索