shared_ptr是一种智能指针(smart pointer),作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting)。
一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除。
1、智能指针主要用途:方便资源管理,自动释放没有指针引用资源
2、使用引用计数标识是否有多余指针指向该资源。(share_ptr本身会占用一个引用)
3、赋值操作中,原来资源引用计数会减一,新指向的资源引用计数会加一。
4、线程安全
5、make_shared优于new,make_shared可以一次将需要内存分配好。
6、std::shared_ptr的大小是原始指针的两倍,因为它的内部有一个原始指针指向资源,同时有个指针指向引用计数。
7、引用计数是分配在动态分配的,std::shared_ptr支持拷贝,新的指针获可以获取前引用计数个数。