C++是否有垃圾回收器(GC)?

22

我目前正在阅读一份未发布的硕士论文,我将会对其提供反馈。

在报告中,他们提到了本地C++和托管C++下的垃圾回收器。我认为C++没有任何标准的垃圾回收器,我的想法正确还是错误?(他们没有提及Boehm-Demers-Weiser。)

他们在某些条件下无法让它正常工作。他们在一个线程中创建对象,然后在另一个线程中删除指针。


TR1 算吗? - sarnold
1
@kotlinski请不要抨击你不了解的技术。我从未使用过Managed C++,但它的后继者-C++/CLI是.NET生态系统的重要组成部分。 - Matěj Zábský
对不起,我不知道它是生态系统的一部分。 - Johan Kotlinski
小心垃圾回收,因为你仍然可能遇到问题。请参见http://www.codeproject.com/KB/showcase/IfOnlyWedUsedANTSProfiler.aspx - Stuart Matheson
4个回答

27

原生C++默认没有这样的功能(最接近此功能的是智能指针,但那仍然完全不同),但这并不妨碍您编写自己的垃圾回收解决方案(或使用第三方解决方案)。

托管C++(以及其后继者C++/CLI)当然使用.NET垃圾回收来管理托管资源(虽然本地资源不会被垃圾回收,必须像原生C++一样手动管理)。


4
C++0x明确允许实现包含垃圾收集器。 - Chinmay Kanchi

13

现有的C++1998/2004标准不指定垃圾回收器。即将到来的C++0x标准确实指定了可选的垃圾回收器API,但是实现是另一个方面。

  • GCC套件提供Boehm-GC进行垃圾回收。
  • Managed C++是Microsoft推出的扩展C++,随着.Net 1.0发布,扩展了具备垃圾回收功能的C++。
  • 此外,还有Microsoft发布的C++ / CIL,它在.Net 2中替代了Managed C++并引入了更多基于.Net的特性。
  • Sun提供了libgc作为C/C++的垃圾回收器。

0

我对C++下的垃圾回收有不同的看法。

请看MCP(开源许可证GPLv3)-- C++的垃圾回收应该不会比GJC/Mono差。


0

目前C和C++唯一的GC库是Hans-Boehm library,但据我所知,它设置起来比较困难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接