【C++】RAII思想---利用对象生命周期来控制程序资源

C++中的智能指针是为了解决内存管理问题,尤其是防止内存泄漏和异常安全。RAII(Resource Acquisition Is Initialization)思想是其核心,它在对象构造时获取资源,并在析构时自动释放。通过智能指针和智能锁,可以确保资源在对象生命周期内有效并自动管理,避免手动释放带来的风险。智能锁能确保在对象生命周期结束后正确解锁,防止死锁和资源未释放的问题。
摘要由CSDN通过智能技术生成

C语言中我们学过指针,那么为什么在C++中还需要存在智能指针呢?

实际上它的出现就是给c++的内存管理“填坑”来的~ 因为它的内存自己管理,所以说,有的时候使用malloc或者new创建的对象忘记释放就会导致内存泄漏,又或者此时释放语句之前有一段代码是抛异常的话,那么执行流就会乱跳,导致内存也无法释放。
比如这一段代码,若n太大,开辟空间失败会抛异常,导致执行流跳出没有释放指针p。

void Func()
{
	int n;
	cin >> n;
	int *p = new int;
	int *t = new int[n];//失败时抛异常
	delete p;//没有释放p
	delete t;
}

所以c++就引入了智能指针的概念来解决该问题。在了解智能指针之前应该先了解RAII思想。

RAII思想

智能指针的核心思想就是RAII(Resource Acquisition Is Initialization),RAII是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。

RAII是资源获得即初始化,在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。借此,我们实际上把管理一份资源的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值