文章目录
深入理解C++智能指针:shared_ptr、unique_ptr与weak_ptr
引言
在C++开发中,内存管理一直是程序员需要谨慎处理的难题。传统裸指针容易引发内存泄漏、悬垂指针等问题。C++11引入的智能指针(Smart Pointers)通过RAII(资源获取即初始化)机制,实现了内存的自动管理。本文将深入解析三种核心智能指针:std::shared_ptr
、std::unique_ptr
和std::weak_ptr
,助您写出更安全的代码。
一、std::shared_ptr:共享所有权
核心特性
std::shared_ptr
基于引用计数机制,允许多个指针共享同一对象的所有权。当最后一个shared_ptr
离开作用域时,对象自动被销毁。
常用方法
- get(): 获取原始指针(谨慎使用)
- reset(): 减少引用计数,若计数归零则释放对象
- use_count(): 查看当前引用计数
#include <memory>
#include <iostream>
struct Foo {
Foo() {
std::cout << "Foo created\n"; }
~Foo() {
std::cout << "Foo destroyed\n"; }
};
int main() {
std::