Smart pointer:C++指针不具备构造和析构函数,引入智能指针是为了更好的回收内存资源。
Smart Pointer实现方式(模板):
1.模板auto_ptr: C++98提供,已废弃
2.模板unique_ptr、shared_ptr: C++11提供
unique_tr:建立所有权(ownership)概念,对于特定的对象,只能有一个智能指针可拥有它,赋值操作转让所有权。
shared_ptr:跟踪引用特定对象的智能指针数,赋值时,计数将加1,而指针过期时,计数将减1。仅当最后一个指针过期时,才调用delete。
Android 中封装了sp<> 强指针,wp<>弱指针的操作,android 中的sp 句柄类实际上就是google 实现的一种强引用的智能指针。
强指针:通过引用计数来记录有多少使用者在使用一个对象,如果所有使用者都放弃了对该对象的引用,则该对象将被自动销毁。
弱指针:指向一个对象,但弱指针仅仅记录该对象的地址,不能通过弱指针来访问该对象。