2011-02-23 79 views
14

我正在閱讀一篇未發表的碩士畢業論文報告,我將就此提供反饋意見。C++有垃圾收集器嗎?

在報告中,他們提到GC在本機C++下,並管理C++。我認爲C++沒有任何標準GC,我錯了還是對嗎? (他們沒有提到Boehm-Demers-Weiser。)

他們在某些條件下使其工作有些問題。他們在一個線程中創建對象,並從另一個線程刪除指針。

+0

[TR1](http://en.wikipedia.org/wiki/C%2B%2B_Technical_Report_1)是否包括在內? – sarnold 2011-02-23 09:49:35

+1

@kotlinski請不要打擾你不知道的技術。我從來沒有使用過Managed C++,但它的後繼者 - C++/CLI是.NET生態系統的重要組成部分。 – 2011-02-23 10:43:46

+0

對不起,我不知道它是生態系統的一部分。 – 2011-02-23 10:46:25

回答

17

託管C++(及其後繼C++/CLI)當然使用.NET垃圾回收來管理資源(雖然本機資源不是垃圾回收,必須像本地C++一樣手動管理)。默認情況下,原生C++沒有這種東西(最接近這個的是智能指針,但這仍然是完全不同的東西),但這並不妨礙您編寫自己的垃圾回收解決方案(或使用third party solution) 。

+3

C++ 0x明確允許實現包含垃圾回收器。 – 2011-02-23 09:50:04

9

1998/2004的現有C++標準沒有指定垃圾收集器。 即將到來的標準C++ 0x確實指定了一個可選的垃圾收集器API,但實現是另一部分。如上所述,編譯器供應商和第三方都有可用於C++的垃圾收集器。

  • GCC套件爲垃圾收集提供Boehm-GC。
  • 託管C++是Microsoft向C++發佈的擴展,它使用.Net 1.0擴展了C++的垃圾收集功能。
  • 還有微軟發佈的.Net 2的C++/CIL,它棄用了託管C++和更多.Net中心特性。
  • Sun提供了libgc作爲C/C++的垃圾回收器。
+0

確實很有趣 – 2011-02-23 10:06:11

0

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

看看MCP(開源許可證GPLv3) - 使用C++的GC應該不會比GJC/Mono差。