Boehm垃圾收集器对于C语言来说非常好用,但在C++下使用会有些棘手。请查看“C++接口”部分,网址为:http://www.hpl.hp.com/personal/Hans_Boehm/gc/gcinterface.html。我认为,如果您需要垃圾回收,请选择内置此功能的语言。对于C++而言,最好的通用解决方案是使用共享指针(例如来自boost),并处理循环依赖关系。您可以采取以下两种措施: 1.设计无循环依赖的事物 2.设计带有“枢纽”的事物,以打破循环并允许回收对象您要么使用C++垃圾收集器处理真正糟糕、复杂、难以调试的问题,要么处理更简单的经典问题:在使用完对象后释放它们。
总之,有C++/CLI这个针对.NET框架的C++语言,那里的垃圾回收做得相当不错。 尽管说实话,由于其中加入了许多语法糖,你几乎可以将其视为一种全新的语言,它只是刚好能够与C/C++很好地配合使用。 如果您不固执于C++作为编程语言,也可以考虑D,它像C++一样编译成本地代码(与C++ / CLI不同),但也具有垃圾回收功能。