std::shared_ptr、std::weak_ptr
时间: 2023-11-16 18:56:32 浏览: 91
C++ 智能指针(shared_ptr/weak_ptr)源码
std::shared_ptr和std::weak_ptr都是C++11中提供的智能指针,都是用来管理资源的。其中,std::shared_ptr采用的是引用计数来管理资源,即它会记录有多少个指针指向同一个资源,当所有指向该资源的指针都被析构时,std::shared_ptr会自动释放该资源。而std::weak_ptr则不会增加引用计数,只是提供了一种安全的观察者模式,可以通过lock来返回一个std::shared_ptr的指针来判定是否存在资源,如果存在,则返回一个指向std::shared_ptr的指针,否则返回一个空指针。
另外,std::shared_ptr和std::unique_ptr还有一些不同点,比如std::unique_ptr不能被拷贝,而std::shared_ptr可以被拷贝。同时,std::unique_ptr可以指定删除器,而std::shared_ptr则必须在其构造函数中指定删除器。
为了提高效率,我们在构造智能指针时,应该优先使用std::make_shared<T>来构造智能指针,这样可以避免动态分配内存的开销,提高程序的运行效率。
--相关问题--:
阅读全文