C ++有垃圾收集器吗?

时间:2011-02-23 09:39:21

标签: c++ garbage-collection

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

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

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

4 个答案:

答案 0 :(得分:18)

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

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

答案 1 :(得分:9)

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

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

答案 2 :(得分:0)

C和C ++唯一的GC库是Hans-Boehm library,但据我所知,很难设置它。

答案 3 :(得分:0)

我对C ++下的GC有不同看法。

查看MCP(开源许可证GPLv3) - 使用C ++的GC不应该比GJC / Mono差。