寫時拷貝
寫時拷貝是淺拷貝解決淺拷貝析構衝突的一種解決方案,寫時拷貝也叫延時拷貝,幾個對象共用一塊空間,當執行讀操作時不會有影響,當你需要進行寫操作改變一個對象的內容時,空間的值不能被修改,會互相影響,那麼就需要單獨開闢一塊空間將對象拷貝過去然後改,不改變就不需要開闢。
寫時淺拷貝與深拷貝比較的優點:佔用空間少(相同內容不開闢新空間),複製效率高
寫時拷貝有兩種方案
1.寫時拷貝(引用計數),一個對象第一次開闢空間存放字符串,再開闢一塊新的空間存放引用計數。當它拷貝構造其他對象時,讓其他對象的引用計數也都指向存放引用計數的同一塊空間,引用計數加一。
缺陷:(1)每次new兩塊空間,創建多個對象的時候效率較低;
(2)它多次分配小塊空間,容易造成內存碎片化,導致分配不出來大塊內存。
2.優化即第二種方案寫時拷貝(指針),仿照new的底層實現,開闢一塊空間,在其頭四個字節計數,其思想就是在構造對象的時候多開闢四個字節用來存醫用技術,這樣就不需要變量了,要用引用計數的時候只需要把它取出來就可以了。