c++11 三大智能指针
时间: 2023-10-26 13:08:11 浏览: 59
C++11引入了三种智能指针,它们分别是unique_ptr、shared_ptr和weak_ptr。unique_ptr是独占所有权的智能指针,它确保在其生命周期结束时自动释放所管理的对象的内存。unique_ptr不允许多个指针同时管理同一个对象。shared_ptr是共享所有权的智能指针,它可以被多个shared_ptr对象共享,并且会自动跟踪和释放所管理对象的内存。当最后一个shared_ptr对象销毁时,它会自动释放内存。weak_ptr是一种用于解决shared_ptr的循环引用问题的智能指针。它可以被转换成shared_ptr对象,但不会增加引用计数,因此不会导致循环引用。通过weak_ptr可以判断所管理的对象是否存在,并且可以安全地访问所管理的对象。
相关问题
c++11新特性智能指针
C++11引入了智能指针(smart pointers),它们是一些用于管理动态分配的内存的类模板。C++11中引入的主要智能指针有:
1. `std::shared_ptr<T>`:共享指针,用于共享资源的所有权。它使用引用计数来跟踪指针的引用次数,当引用计数变为零时,自动释放内存。可以通过`std::make_shared<T>()`来创建`shared_ptr`对象。
2. `std::unique_ptr<T>`:独占指针,用于独占资源的所有权。它不能被复制或共享,但可以通过移动语义进行转移。当`unique_ptr`超出作用域或被显式释放时,它会自动释放内存。
3. `std::weak_ptr<T>`:弱引用指针,用于解决循环引用的问题。它不会增加引用计数,可以用来观测`shared_ptr`是否还存在,避免悬空指针的问题。
智能指针的引入可以帮助开发者更方便地管理动态分配的内存,避免内存泄漏和悬空指针等问题。使用智能指针可以减少手动调用`delete`或`delete[]`的需要,提高代码的安全性和可维护性。
c++面试三种智能指针
在 C++ 中,智能指针是为了解决指针管理的问题而提出的一种方案。它通过 RAII(资源获取即初始化)技术自动管理内存资源,能够有效地免内存泄漏和野指针等问题。C++ 11 中引入了三种智能指针:
1. `unique_ptr`:独占式智能指针,不能被拷贝,只能移动,用于管理单个动态分配的对象。
2. `shared_ptr`:共享式智能指针,可以共享所有权,用于管理多个指向同一对象的指针。
3. `weak_ptr`:弱引用智能指针,不会增加对象的引用计数,主要用于解决 shared_ptr 的循环引用问题。