当前位置:首页 C++ > 正文

C++ 智能指针(auto_ptr/unique_ptr/shared_ptr)

作者:野牛程序员:2024-01-03 18:40:21 C++阅读 2645

智能指针是 C++ 中用于管理动态分配的内存的工具。它们帮助确保资源在不再需要时被正确释放,从而减少内存泄漏的风险。

auto_ptr 是 C++98 中引入的第一个智能指针,但在 C++11 中已经被弃用。取而代之的是 unique_ptrshared_ptr

unique_ptr 用于管理独占所有权的资源。一个 unique_ptr 拥有对其指向的对象的唯一所有权,当 unique_ptr 被销毁时,它会自动释放其所拥有的对象。

#include <memory>

int main() {
    std::unique_ptr<int> myUniquePtr = std::make_unique<int>(42);
    // 使用myUniquePtr
    // ...

    // myUniquePtr将在作用域结束时自动释放内存
    return 0;
}

shared_ptr 允许多个智能指针共享对同一对象的所有权。它使用引用计数来追踪有多少个 shared_ptr 共享同一对象。

#include <memory>

int main() {
    std::shared_ptr<int> firstSharedPtr = std::make_shared<int>(42);
    std::shared_ptr<int> secondSharedPtr = firstSharedPtr; // 共享所有权

    // 使用firstSharedPtr和secondSharedPtr
    // ...

    // 当所有shared_ptr都离开作用域时,对象将被销毁
    return 0;
}

总体而言,使用智能指针可以提高代码的安全性和可维护性,因为它们自动处理内存管理,减少了手动管理内存的错误可能性。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击