Android 智能指針實現的底層原理(sp,wp, refbase)

今天本身想明白了。
sp<A> spa = new A(); 與  A* a = new A(); 的區別了。

sp<A> spa = new A(); 執行的流程是:
1)  A* a = new A();
2) sp<A> spa = a;

步驟2的精髓在與, sp<A> 是一個模板類, 它存儲在區棧, 因此函數結束以後, 它會主動調用析構函數。
而A* 是一個指針, 它指向的內存分配在堆區, 函數結束以後, 它不會主動調用析構函數。函數

相關文章
相關標籤/搜索