C++有垃圾收集器吗?

Mar*_*son 15 c++ garbage-collection

我正在阅读未发表的硕士论文报告,我将提供反馈意见.

在报告中,他们在本机C++和托管C++下提到了GC.我以为C++没有任何标准的GC,我错了还是对的?(他们没有提到Boehm-Demers-Weiser.)

他们在某些条件下使其工作有一些问题.它们在一个线程中创建对象,并从另一个线程中删除指针.

Mat*_*ský 19

托管C++(及其后继者C++/CLI)当然使用.NET垃圾收集来管理资源(尽管本机资源不是垃圾收集的,必须像在本机C++中那样手动管理).

默认情况下,本机C++没有这样的东西(最接近它的是智能指针,但这仍然是完全不同的东西),但这并不妨碍您编写自己的垃圾收集解决方案(或使用第三方解决方案).

  • C++ 0x显式允许实现包含垃圾收集器. (3认同)

Muh*_*ser 10

1998/2004年现有的C++标准没有指定垃圾收集器.即将推出的标准C++ 0x确实指定了可选的垃圾收集器API,但实现是另一部分.尽管如此,编译器供应商和第三方都有可用于C++的垃圾收集器.

  • GCC套件提供Boehm-GC用于垃圾收集.
  • 托管C++是微软对.Net 1.0发布的C++的扩展,它扩展了C++的垃圾收集功能.
  • 微软也发布了C++/CIL,其中包含.Net 2,它不推荐使用更多以.Net为中心的托管C++.
  • Sun提供了libgc作为C/C++的垃圾收集器.