商務(wù)網(wǎng)站建設(shè)需要多少錢廈門seo關(guān)鍵詞優(yōu)化代運營
auto_ptr
- 設(shè)計目的:超出作用域,自動釋放內(nèi)存。
- 所有權(quán)傳遞:拷貝auto_ptr時,原指針失效,釋放所有權(quán);新指針獲得所有權(quán)。總而言之,允許通過拷貝轉(zhuǎn)移所有權(quán),獨占所有權(quán)。
- 缺陷:這個指針使用起來容易出bug。因為這個指針拷貝以后,原指針會被重置,而導(dǎo)致失效,無法繼續(xù)使用,如果繼續(xù)使用,就會導(dǎo)致崩潰。所以auto_ptr被淘汰了,不要用它。
unique_ptr
- 設(shè)計目的:超出作用域,自動釋放內(nèi)存,用來代替auto_ptr。
- 所有權(quán)傳遞:禁止拷貝,只支持通過移動語義傳遞所有權(quán)。通過移動語義傳遞所有權(quán)時,原指針失效,釋放所有權(quán);新指針獲得所有權(quán)??偠灾?#xff0c;只允許通過移動構(gòu)造轉(zhuǎn)移所有權(quán),不允許拷貝,獨占所有權(quán)。為什么不支持拷貝,因為所有權(quán)傳遞,更符合移動語義,拷貝是原意是生成一個副本指針,不改變原指針,但是因為獨占所有權(quán),所以原指針會被重置為空指針,不符合拷貝的含義。需要注意的是unique_ptr可以作為函數(shù)返回值返回,這是因為,返回值可以支持移動語義。
scoped_ptr
- 設(shè)計目的:超出作用域,自動釋放內(nèi)存。
- 所有權(quán)傳遞:禁止拷貝,不支持傳遞所有權(quán),只支持交換所有權(quán)??偠灾?#xff0c;禁止所有權(quán)轉(zhuǎn)移,允許所有權(quán)交換。
shared_ptr
- 中文名:強指針。
- 設(shè)計目的:引用計數(shù)減到0,自動釋放內(nèi)存。
- 所有權(quán)傳遞:允許拷貝,允許多個shared_ptr共享同一個動態(tài)創(chuàng)建的對象的所有權(quán)。
- 缺點:互相持有對方實例的shared_ptr時,會導(dǎo)致循環(huán)引用問題,導(dǎo)致兩個shared_ptr都無法釋放內(nèi)存。
weak_ptr
中文名:弱指針。
- 設(shè)計目的:解決強指針循環(huán)引用問題。
- 所有權(quán):不持有任何所有權(quán),僅進(jìn)行所有權(quán)查詢。但是可以轉(zhuǎn)換為強指針。