c++中的引用计数究竟意味着什么?,

what exactly reference counting in c++ means?,

本文关键字:意味着 什么 究竟 引用 c++      更新时间:2023-10-16

引用计数究竟是什么?特别是,它对C++来说是什么?如果我们不处理这些问题,我们会面临什么问题?所有语言都需要引用计数吗?

引用计数究竟是什么?特别是,它对C++来说是什么

简单地说,引用计数意味着对对象的引用进行计数。

通常,C++使用RAII的技术。其中,管理类型对象的释放的能力与类型对象本身有关。这意味着用户不必显式管理对象的生存期及其释放。进行此管理的功能内置于对象本身。

该功能意味着对象应该存在并保持有效,直到有利益相关者引用该对象,这是通过引用计数实现的。每次共享(复制)对象时,引用计数(通常是类类型内的成员)都会增加,每次调用析构函数时,计数都会减少,当计数达到0时,任何人都不会引用该对象,它标志着其生命周期的结束,因此它被析构函数。

如果我们不处理这些问题,我们会面临什么问题

这将意味着不再有RAII,也意味着无休止且经常出现错误的手动资源管理
在简短的编程噩梦中。

所有语言都需要引用计数吗

语言不需要引用计数,但使用该技术为语言用户提供了非常简单的使用和较少的工作量,因此大多数语言都倾向于使用它来为用户提供这些优势。

引用计数是一种简单但不完整的垃圾检测方法。

当计数器达到零时,您可以释放该对象。

但是,如果不再有相互引用的循环对象,它们将永远不会发布

考虑a引用b,b参考a,但没有其他参照a或b。a和b上的引用计数仍为1(=使用中)

引用计数垃圾收集是一种强大的内存管理技术,有助于防止对象被意外删除或多次删除。该技术并不局限于C++代码,尽管其名称与引用变量的C++概念无关。相反,这个术语意味着我们保留对一个对象的所有"拥有引用"的计数,并在该计数为零时删除该对象。

引用计数-让我们使用一个比喻。

你有耳朵。你想在某个时候把它拿回来。

有一群人指着你的耳朵。他们一指向你就数。

当数字变为零时,它就是你的,你可以随心所欲。

也就是说,把它从等式中去掉(把它放回记忆中)。

顺便说一句。圆形的东西很难发现。