用RAII的思想去管理Windows的读写锁SRWLock

前言

最近对C++的RAII(资源申请初始化),又有了新的理解。

我们C++中使用一个资源(例如 内存)的步骤:

  1. 申请资源
  2. 使用资源
  3. 释放资源

简述一下RAII:

就是可以自动回收资源,将资源封装成对象。

关键在于:
变量的生命周期结束后,会自动释放变量。
例如一个变量是局部变量,存储在栈上,那么当该函数结束后,这个变量就已经被释放掉了。
那么,当变量是类变量的时候,当该类对象变量生命周期结束后,应该调用析构函数释放掉该资源!

生命周期

局部变量:存储在栈上,生命周期结束后,由栈释放。
全局或静态变量:存储在data段,生命周期是整个进程,自动释放。
堆上对象:存储在堆上,生命周期结束后,由编程人员释放。

我们申请内存的时候,就是在申请堆上的资源,所以需要我们手动释放,当我们忘记释放的时候,就会引起内存泄漏!

那么我们通过RAII的思想就可以解决这个问题!
使用栈上对象管理堆上的对象,通过析构函数,就可以确定资源释放的实际!

RAII 举例

实际上智能指针就是利用了RAII的思想。
这里简述一下:
构造函数申请指针资源,然后进行使用,当生命周期结束,析构函数会释放资源!

template<class T>
class smart_ptr
{
   
public:
	smart_ptr()(T* ptr = nullptr)
		:_ptr(ptr)
	{
   
		// 构造函数
	}
	~smart_ptr()
	{
   
		// 析构函数
		if (_ptr)
			delete _ptr;
	}
	//智能指针的第二个特性
	T<
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值