C++ 第三方垃圾收集器中使用的方法
我写信是为了澄清一些关于这个网站的评论C++ 第三方垃圾收集器中使用的方法,c++,garbage-collection,history,theory,C++,Garbage Collection,History,Theory,我写信是为了澄清一些关于这个网站的评论 1)我知道C++没有垃圾回收器。有人说C++是在垃圾回收器的发明之前发明的,所以这就是原因。这是真的吗?我认为这是有道理的 2) 每当讨论垃圾收集器时,smart point(如boost::share_ptr)就是一种方式。我曾经确信引用计数是实现垃圾收集器的一种方法,但有人说,smart point不是垃圾收集器的实现。怎么回事 (3)有人说垃圾回收器为什么不包含在C++中,因为它很难,很多问题都无法解决。然而,有人说有第三方垃圾收集器可用,无论是商
1)我知道C++没有垃圾回收器。有人说C++是在垃圾回收器的发明之前发明的,所以这就是原因。这是真的吗?我认为这是有道理的
2) 每当讨论垃圾收集器时,smart point(如boost::share_ptr)就是一种方式。我曾经确信引用计数是实现垃圾收集器的一种方法,但有人说,smart point不是垃圾收集器的实现。怎么回事 (3)有人说垃圾回收器为什么不包含在C++中,因为它很难,很多问题都无法解决。然而,有人说有第三方垃圾收集器可用,无论是商业还是免费的。那么这些第三方如何处理这些问题呢 如果有人能澄清我的困惑,我将不胜感激非常感谢 关于1和较小程度的2: 这是一个简洁但很好的解释 另外,关于这个话题,这里也有类似的问题 看看他们 不,垃圾收集比C++更古老(特别是60年代的许多LISP版本)。
< C++不包含垃圾收集器的原因是因为你,程序员,管理内存,一个从C继承的特征。垃圾回收器是一种语言,它为你完成内存管理。您可以实现一个,但必须使用您的实现来管理所有的内存访问—否则,您将绕过它。总之,GC是你(在你所使用的语言中)和系统底层内存的一部分。 < P>垃圾收集的最小支持——但没有垃圾收集器——将被添加到下一个C++标准(非正式地称为C++ 0x)。这里有一篇关于它的好文章: 正如亚历克斯指出的,LISP自C++发明之前就已经进行了垃圾收集。OTOH,一些早期的实现使用了引用计数
对C++中添加GC的问题进行了一些认真的讨论。Calp.Lang.c++。慢化可能很有趣。警告:它们相当长,一些论点会重复,在少数情况下会重复多次。OTOH,他们确实指出了一些实际问题和可能的解决方案。关于“哪种语言首先具有X功能”的唯一答案是Lisp、Smalltalk。@Jimmy,还有其他的,例如--“第一种语言具有代数表达式语法”,Fortran;“具有块结构和词汇范围的第一语言”,Algol(Scheme从Algol复制而来,其他LISP从Scheme复制而来);“有自己专门字符集的第一语言”,APL;…;-)非常感谢!非常感谢您的评论。