C++动态内存管理——智能指针

智能指针是C++中用于自动管理动态内存的对象,防止内存泄漏。主要类型包括unique_ptr、shared_ptr和weak_ptr。unique_ptr具有唯一所有权,不可复制;shared_ptr采用引用计数,允许多个指针共享对象;weak_ptr解决shared_ptr的循环引用问题。选择智能指针应考虑对象的共享需求和生命周期管理。
摘要由CSDN通过智能技术生成

智能指针

1.什么是智能指针?

智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露(利用自动调用类的析构函数来释放内存)。

实现技术是使用引用计数(shared_ptr)、资源独占(unique_ptr和auto_ptr)、只引用,不计数(weak_ptr)

指针和智能指针:

智能指针是对象,对象在过期时,会调用其析构函数析构掉,而常规指针,当其指向堆内存,最终需要人为的delete

2.为什么需要智能指针?

(1)new和delete管理动态内存存在的三个常见问题:

1)忘记delete内存

2)使用已经释放掉的对象

3)同一块内存释放两次

(2)中途抛出异常,无法释放资源。

3.智能指针的原理

创建一份资源出来的时候,交给一个类对象去管理,当类对象声明周期结束时,自动调用析构函数释放资源。除此之外,通过运算符重载(重载*和重在-> 等),可以像指针一样使用。

4.3种智能指针的实现策略/实现技术

(1)auto_ptr和unique_ptr:

采用的是单独所有权的概念,对于特定对象,只能被一个智能指针所拥有,这样,只有拥有该对象的智能指针的析构函数才会删除该对象,但要注意的是,赋值操作会转让操作权。 

(2)shared_ptr

shared_ptr则采用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值