温馨提示×

C++中的智能指针怎么使用

c++
小亿
81
2024-03-11 16:21:25
栏目: 编程语言

在C++中使用智能指针是为了管理动态分配的内存,避免内存泄漏和悬空指针的问题。C++11引入了std::shared_ptr和std::unique_ptr两种智能指针,这两种智能指针的用法如下:

  1. shared_ptr:多个shared_ptr可以指向同一个对象,它会维护一个引用计数,当引用计数为0时,对象会被自动销毁。
#include <memory>

int main() {
    std::shared_ptr<int> ptr1 = std::make_shared<int>(10);
    std::shared_ptr<int> ptr2 = ptr1;

    // 使用智能指针访问对象
    std::cout << *ptr1 << std::endl;
    std::cout << *ptr2 << std::endl;
}
  1. unique_ptr:unique_ptr拥有独占的所有权,不允许多个unique_ptr指向同一个对象,当unique_ptr被销毁时,对象也会被销毁。
#include <memory>

int main() {
    std::unique_ptr<int> ptr1 = std::make_unique<int>(10);
    //std::unique_ptr<int> ptr2 = ptr1; // 编译错误,unique_ptr不支持拷贝

    // 使用智能指针访问对象
    std::cout << *ptr1 << std::endl;
}

除了shared_ptr和unique_ptr,C++11还引入了weak_ptr用于解决shared_ptr的循环引用问题。使用智能指针可以大大简化内存管理,提高代码的可维护性和安全性。

0