C++-C++中,RRID是什么意思?

C++-C++中,RRID是什么意思?

泛泛之交 发布于 2017-04-22 字数 0 浏览 1190 回复 2

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瑾兮 2017-09-01 2 楼

RRID,全称是(Resource Release Is Destruction),资源释放即初始化。
它利用C++对自动的确定性析构的支持,来确保与某个封装类型的实例相关联的资源能够得到确定性的释放。

再来看看 RAII 的概念(Resource Acquistion Is Initialization,资源获取即初始化),意思是:对象的初始化(构造函数的调用)包含对它所要管理的资源的获取操作。它所隐含的另一个思议是:对象的析构(析构函数的调用)会自动引发资源的释放。
其实RAII是这么一种机制,它利用C++对构造和自动的确定性析构的支持,来确保跟某个封装类型的实例相关联的资源能够得到确定性的释放,可以将其看成是RRID机制的超集。

为什么还会使用RRID机制,因为有些时候,资源的分配是外界做的,但是为了防止外界没有进行资源的释放,所以在我们的类型中的析构函数中进行资源的释放,可以看作是轻量级的RAII。

想挽留 2017-05-23 1 楼

我的理解就是主要两点:
1. 利用c++类的析构特性来释放资源, 这样可以防止用户偶尔忘记释放资源带来的问题,比如我初始化了一个资源, 然后在下面进行了一系列的操作,可能中间又许多的return操作, 如果使用RAII就非常方便, 不需要再每个return语句都执行资源释放, 而是直接借助析构函数
2. 因为c++类的析构函数在出现异常的时候也会被执行, 我们可以利用这个特性来防止异常带来的资源未释放问题

mark: 如果写了一个c++类, 其中涉及到资源的管理, 一般我们在析构函数都会进行释放资源操作, 但是我们应该提供一个public方法来让用户可以及时的释放资源,比如c++的fstream..