究竟什么是引用计数?特别是,C ++的用途是什么?如果我们不处理它们会遇到什么问题?所有语言都需要引用计数吗?
答案 0 :(得分:7)
引用计数究竟是什么?特别是,C ++的用途是什么?
简单来说,引用计数意味着计算对象的引用。
通常,C ++采用 RAII 的技术。其中,管理类型对象的释放的能力被绑定在类型对象本身内。这意味着用户不必显式管理对象的生命周期及其释放,执行此管理的功能是在对象本身中构建的。
此功能意味着对象应该存在并保持有效,直到有利益相关者引用该对象,这是通过引用计数实现的。每次共享(复制)对象时,引用计数(通常是类类型中的成员)都会递增,每次调用析构函数时,计数都会递减,当计数达到0时,任何人都不会引用该对象。标志着它的寿命结束,因此它被破坏了。
如果我们不处理它们会遇到什么问题?
这意味着不再需要RAII,以及无休止且经常有缺陷的手动资源管理 简而言之,编程噩梦。
所有语言都需要引用计数吗?
语言不要求引用计数,但使用该技术可以非常方便地使用该语言的用户并减少工作量,因此大多数语言都喜欢使用它来为用户提供这些优势。 / p>
答案 1 :(得分:1)
引用计数是一种简单但不完整的垃圾检测方法。
当计数器达到零时,您可以释放该对象。
但是如果没有更多使用过的对象相互引用循环,它们将永远不会被释放
考虑引用 b,b 引用 a,但没有别的引用 a或b。 a和b上的参考计数仍为1(=正在使用中)
答案 2 :(得分:0)
引用计数垃圾收集是一种用于管理内存的强大技术,可帮助防止意外或多次删除对象。该技术不仅限于C ++代码,尽管名称不同,但它与参考变量的C ++概念无关。相反,该术语意味着我们维护对象的所有“拥有引用”的计数,并在该计数变为零时删除该对象。
答案 3 :(得分:-2)
引用计数 - 让我们使用一个比喻。
你有耳朵。你想在某个时候回来。
你有一群人指着你的耳朵。你一指出就算数。
当数字变为零时 - 它只是你的,你可以随意使用它。
即。把它从等式中取出(将其释放回记忆中)。
顺便说一句。圆形的东西很难发现。