C++学习之智能指针--auto_ptr、scoped_ptr、scoped_array、shared_ptr、shared_array、weak_ptr

本文详细介绍了C++中的智能指针,包括auto_ptr、scoped_ptr、shared_ptr等,探讨了它们的分类、工作原理及在C++标准库和BOOST库中的应用。智能指针作为资源管理的工具,能够自动释放内存,防止内存泄漏。文章还讨论了独占型和共享型智能指针的区别,并提到了引用计数的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

智能指针概述

本文主要讲解C++primer中的智能指针的概念,以及标准库中的auto_ptr类,boost库中的scoped_ptr、scoped_array、shared_ptr、shared_array、weak_ptr,其中很多个人的理解,如有问题欢迎指正。这里面涉及到 解引用操作符的重载,箭头操作符的重载,类模板等知识。

在编写C++代码的时候,经常需要分配内存、释放内存,一般是通过指针实现的,即便是资深的C++程序员有时也会忘掉delete,这就会导致内存的泄漏,这就需要一种自动释放资源的机制,所以提出了智能指针的概念,我们通过智能指针对象代理了普通指针的行为(代理模式)。智能指针其实就是模拟指针动作的类,所以智能指针类一般都会重载 -> 和 * 操作符。智能指针对象能在资源不再被使用的时候自动释放资源,也就是在智能指针对象析够的时候自动去释放其管理的资源。

智能指针的分类

智能指针主要分为两类:按资源供几个智能指针对象管理分为独占型(自己起的名字)和共享型智能指针。独占型智能指针所管理的资源只能由一个智能指针对象负责管理(即释放),独占型又可以细分为可以转让管理权和不能转让管理权两种类型,可转让管理权的智能指针在复制构造和赋值的时候都会发生管理权的转移,比如sp2=sp1,赋值结束后,sp2释放了对以前资源的管理权,开始拥有赋值前sp1所指对象的管理权,sp1不在拥有管理权。共享型智能指针通过维护一个对资源的引用计数来实现多个智能指针对象使用同一资源,每当资源上新增一个智能指针对象的时候,引用计数就加1,智能指针对象析够的时候,引用计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值