c++中的引用计数究竟意味着什么?,
what exactly reference counting in c++ means?,
引用计数究竟是什么?特别是,它对C++来说是什么?如果我们不处理这些问题,我们会面临什么问题?所有语言都需要引用计数吗?
引用计数究竟是什么?特别是,它对C++来说是什么
简单地说,引用计数意味着对对象的引用进行计数。
通常,C++使用RAII的技术。其中,管理类型对象的释放的能力与类型对象本身有关。这意味着用户不必显式管理对象的生存期及其释放。进行此管理的功能内置于对象本身。
该功能意味着对象应该存在并保持有效,直到有利益相关者引用该对象,这是通过引用计数实现的。每次共享(复制)对象时,引用计数(通常是类类型内的成员)都会增加,每次调用析构函数时,计数都会减少,当计数达到0时,任何人都不会引用该对象,它标志着其生命周期的结束,因此它被析构函数。
如果我们不处理这些问题,我们会面临什么问题
这将意味着不再有RAII,也意味着无休止且经常出现错误的手动资源管理
在简短的编程噩梦中。
所有语言都需要引用计数吗
语言不需要引用计数,但使用该技术为语言用户提供了非常简单的使用和较少的工作量,因此大多数语言都倾向于使用它来为用户提供这些优势。
引用计数是一种简单但不完整的垃圾检测方法。
当计数器达到零时,您可以释放该对象。
但是,如果不再有相互引用的循环对象,它们将永远不会发布
考虑a引用b,b参考a,但没有其他参照a或b。a和b上的引用计数仍为1(=使用中)
引用计数垃圾收集是一种强大的内存管理技术,有助于防止对象被意外删除或多次删除。该技术并不局限于C++代码,尽管其名称与引用变量的C++概念无关。相反,这个术语意味着我们保留对一个对象的所有"拥有引用"的计数,并在该计数为零时删除该对象。
引用计数-让我们使用一个比喻。
你有耳朵。你想在某个时候把它拿回来。
有一群人指着你的耳朵。他们一指向你就数。
当数字变为零时,它就是你的,你可以随心所欲。
也就是说,把它从等式中去掉(把它放回记忆中)。
顺便说一句。圆形的东西很难发现。
- 这行代码在C++类中意味着什么
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- 生成文件"relink"意味着什么?
- 从二进制流中读取时,将双精度变量的地址转换为 char* 意味着什么?
- 在这种情况下,"typename..."意味着什么?
- "in-situ without memory allocation" 字符串的愚蠢实现意味着什么?
- 使用typedef有什么用,它意味着什么
- GCC 的 -Wpsabi 选项究竟有什么作用?压制它意味着什么?
- 这在C++ "It does not own the underlying data, and so is cheap to copy or assign"中意味着什么
- 由于某种原因,我的代码中出现了 [json.exception.type_error.302]。我知道错误意味着什么,但我不知道哪里有故障
- 调用堆栈显示 SIGBUS,这意味着什么
- C++标准在[basic.scope.hiding]中"same scope"到底意味着什么?
- 评估对象的创建意味着什么?
- 当我们在 C++ 中说"initialize the object"时,它实际上意味着什么?
- C++这种结构"InterceptionKeyStroke &kstroke = * (InterceptionKeyStroke *) &stroke"意味着什么?
- 该语法在C 中意味着什么
- 链接标志对静态库意味着什么
- 由mpglib输出的"hip: Can't rewind stream by 74 bits"到底意味着什么?
- 这在 C# 中意味着什么以及如何使用它