在C++中有没有像Java那样进行垃圾收集的方法?

yruzcnhs  于 2023-01-03  发布在  Java
关注(0)|答案(3)|浏览(139)

我刚开始学习C++,想知道是否有类似Java的GC。
抱歉,这个问题太简单了。我找到的答案对我来说太专业了。
一个简单的解释...

pgvzfuti

pgvzfuti1#

好的,这是我对这个问题的看法。你可以试试Hans Boehm conservative GC,它应该(嗯,著名的最后一句话)在C中工作得很好。
当我们在C
中通过new分配对象时,首先我们调用new运算符来获取原始内存,然后我们执行new表达式来进行对象初始化、调用构造函数等。请查看此处的讨论,但简单地说,Boehm GC将global::new运算符替换为对GC API的调用。
全局::delete操作符也被替换为基本上是空的调用- GC将回收内存。删除表达式将是相同的,整个RAII机制应该可以正常工作。
这是一个写得很好的软件,如果我需要GC用于C++项目,这是我会开始的地方。

ccgok5k5

ccgok5k52#

C++没有默认的GC。堆栈变量由RAII控制。unique_ptr和shared_ptr可以用来自动管理在堆上分配的对象。你也可以选择使用fully tracked pointer

zbdgwd5y

zbdgwd5y3#

只要不使用new,就应该自动进行垃圾收集。
仅使用make_uniquemake_shared分别管理unique_ptrshared_ptr分配的内存。

相关问题