1. 程式人生 > >智慧指標引用計數的用法

智慧指標引用計數的用法

對智慧指標的用法,大多數人都清楚呼叫一次拷貝/賦值建構函式,引用計數器就加1,退出作用域引用計數器減1,直到引用計數器的值為0時,才進行資源的釋放。

但在專案開發中,對定義的智慧指標退出作用域後,到底有沒有釋放資源,也經常還會感到困惑。

比如定義兩個類A、B,其中B中定義list<shared<A> >的成員變數m_ptrList,

 執行程式

{

shared<A> aPtr = new A(); 

m_ptrList.push_back(aPtr);

}

之後對m_ptrList的操作其aPtr物件開闢的空間並沒有析構掉,沒有析構的原因是在m_ptrList.push_back(aPtr);時aPtr其實隱含執行了A類的賦值建構函式,其引用計數器的值變為2,再其程式退出作用域有,引用計數器的數值為1

,因此並沒進行資源析構。

希望這些小知識能夠幫助到大家!