c 深拷貝與淺拷貝區別

2021-10-10 11:37:28 字數 307 閱讀 1134

深拷貝和淺拷貝最根本的區別在於是否真正獲取乙個物件的複製實體,而不是引用。

假設b複製了a,修改a的時候,看b是否發生變化:

如果b跟著也變了,說明是淺拷貝,拿人手短!(修改堆記憶體中的同乙個值)

如果b沒有改變,說明是深拷貝,自食其力!(修改堆記憶體中的不同的值)

淺拷貝(shallowcopy)只是增加了乙個指標指向已存在的記憶體位址,

深拷貝(deepcopy)是增加了乙個指標並且申請了乙個新的記憶體,使這個增加的指標指向這個新的記憶體,

使用深拷貝的情況下,釋放記憶體的時候不會因為出現淺拷貝時釋放同乙個記憶體的錯誤。

C 淺拷貝與深拷貝區別

也許會有人這樣解釋c 中淺拷貝與深拷貝區別 淺拷貝是對引用型別拷貝位址,對值型別直接進行拷貝。不能說它完全錯誤,但至少還不夠嚴謹。比如 string 型別咋說?其實,我們可以通過實踐來尋找答案。首先,定義以下型別 int string enum struct class int string 如下 ...

C 淺拷貝與深拷貝區別

也許會有人這樣解釋c 中淺拷貝與深拷貝區別 淺拷貝是對引用型別拷貝位址,對值型別直接進行拷貝。不能說它完全錯誤,但至少還不夠嚴謹。比如 string 型別咋說?其實,我們可以通過實踐來尋找答案。首先,定義以下型別 int string enum struct class int string 如下 ...

C 深拷貝與淺拷貝區別

c 深拷貝與淺拷貝區別 深拷貝和淺拷貝最根本的區別在於是否真正獲取乙個物件的複製實體,而不是引用。假設b複製了a,修改a的時候,看b是否發生變化 如果b跟著也變了,說明是淺拷貝,拿人手短!修改堆記憶體中的同乙個值 如果b沒有改變,說明是深拷貝,自食其力!修改堆記憶體中的不同的值 淺拷貝 shallo...