shared_ptr是一種智能指針(smart pointer)鬓催,作用有如同指針酝蜒,但會記錄有多少個shared_ptrs共同指向一個對象咙俩。這便是所謂的引用計數(shù)(reference counting)弦悉。
一旦最后一個這樣的指針被銷毀窒典,也就是一旦某個對象的引用計數(shù)變?yōu)?,這個對象會被自動刪除警绩。
1崇败、智能指針主要用途:方便資源管理盅称,自動釋放沒有指針引用資源
2肩祥、使用引用計數(shù)標識是否有多余指針指向該資源。(share_ptr本身會占用一個引用)
3缩膝、賦值操作中混狠,原來資源引用計數(shù)會減一,新指向的資源引用計數(shù)會加一疾层。
4将饺、線程安全
5、make_shared優(yōu)于new,make_shared可以一次將需要內(nèi)存分配好予弧。
6刮吧、std::shared_ptr的大小是原始指針的兩倍,因為它的內(nèi)部有一個原始指針指向資源掖蛤,同時有個指針指向引用計數(shù)杀捻。
7、引用計數(shù)是分配在動態(tài)分配的蚓庭,std::shared_ptr支持拷貝致讥,新的指針獲可以獲取前引用計數(shù)個數(shù)。