解放内存管理:C++智能指针详解与实例应用

作者:微信公众号:【架构师老卢】
12-18 11:5
280

在C++中,智能指针是一种管理动态分配内存的工具,通过自动化内存管理来避免内存泄漏。主要有std::unique_ptrstd::shared_ptr两种。

std::unique_ptr

#include <iostream>
#include <memory>

class MyClass {
public:
    MyClass() {
        std::cout << "对象已创建" << std::endl;
    }

    ~MyClass() {
        std::cout << "对象已销毁" << std::endl;
    }
};

int main() {
    std::unique_ptr<MyClass> uniquePtr(new MyClass);
    // 不需要手动释放内存,当uniquePtr超出作用域时,对象自动销毁
    return 0;
}

std::shared_ptr

#include <iostream>
#include <memory>

class MyClass {
public:
    MyClass() {
        std::cout << "对象已创建" << std::endl;
    }

    ~MyClass() {
        std::cout << "对象已销毁" << std::endl;
    }
};

int main() {
    std::shared_ptr<MyClass> sharedPtr1 = std::make_shared<MyClass>();
    std::shared_ptr<MyClass> sharedPtr2 = sharedPtr1; // 共享所有权
    // 当sharedPtr1和sharedPtr2都超出作用域时,对象才会销毁
    return 0;
}

何时使用智能指针:

  1. 避免内存泄漏: 智能指针能够自动管理内存,确保资源在不再需要时被释放。
  2. 方便资源共享: std::shared_ptr允许多个指针共享同一个资源,自动处理引用计数。
  3. 避免手动释放内存: 智能指针在超出作用域时自动释放资源,减少手动管理的出错可能性。

使用智能指针可提高代码的可维护性和安全性,减少内存管理的复杂性。

相关留言评论
昵称:
邮箱:
阅读排行