寫時拷貝知識點整理

寫時拷貝技術,通俗的講就是在寫的時候(改變字符串的時候)纔會真正的開闢空間進行拷貝(此時就是深拷貝),如果是在數據讀時就拷貝的話,則只會對數據進行拷貝,此時就會造成淺拷貝。這是對程序的性能優化,運用寫時拷貝技術的目的就是爲了避免不必要的內存拷貝。

   

str1與str2同時指向這一塊空間,引用計數n應該等於2,表明系統已經知道有兩個指針指向了同一塊內存。當需要str2指針進行操作時,指針str2開始讀取內容,引用計數n就會減一,然後str2指針會指向一塊新開闢的內存空間,並將讀取的內容拷貝到新的內存空間中。

寫時拷貝技術是通過“引用計數”實現的,在分配空間的時候多分配4個字節,用來記錄有多少個指針指向這塊空間,當有新的指針指向這個空間時,引用計數加一,當釋放這塊空間時,引用計數減一(其實是假裝釋放空間),知道引用計數減爲0時,纔會真正的釋放這個空間,當有的指針要改變這個空間的值時,再爲這個指針分配自己的空間(注意引用計數的變化,舊的引用計數減一,新的引用計數加一)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章