深入理解C++智能指针:shared_ptr、unique_ptr与weak_ptr

文章目录

  • 深入理解C++智能指针:shared_ptr、unique_ptr与weak_ptr
    • 引言
    • 一、std::shared_ptr:共享所有权
      • 核心特性
      • 常用方法
      • 循环引用问题
    • 二、std::unique_ptr:独占所有权
      • 核心特性
      • 所有权转移
      • 适用场景
    • 三、std::weak_ptr:打破循环的助手
      • 解决循环引用
      • 使用方法
    • 四、对比与总结
    • 五、最佳实践

深入理解C++智能指针:shared_ptr、unique_ptr与weak_ptr

引言

在C++开发中,内存管理一直是程序员需要谨慎处理的难题。传统裸指针容易引发内存泄漏、悬垂指针等问题。C++11引入的智能指针(Smart Pointers)通过RAII(资源获取即初始化)机制,实现了内存的自动管理。本文将深入解析三种核心智能指针:std::shared_ptrstd::unique_ptrstd::weak_ptr,助您写出更安全的代码。


一、std::shared_ptr:共享所有权

核心特性

std::shared_ptr基于引用计数机制,允许多个指针共享同一对象的所有权。当最后一个shared_ptr离开作用域时,对象自动被销毁。

常用方法

  • get(): 获取原始指针(谨慎使用)
  • reset(): 减少引用计数,若计数归零则释放对象
  • use_count(): 查看当前引用计数
#include 
#include 

struct Foo {
   
    Foo() {
    std::cout << "Foo created\n"; }
    ~Foo() {
    std::cout << "Foo destroyed\n"; }
};

int main() {
   
    std::

你可能感兴趣的:(开发必备,c++,开发语言)