【发布时间】:2012-03-05 03:31:04
【问题描述】:
到目前为止,我一直在用 Java 编写程序。所以当我开始使用 C++ 时,我首先想到的是如何销毁/删除/终结我不再需要的对象。
在使用 Java 时,我曾经将它们设置为 null,以便垃圾收集器负责处理它。
但是,我不知道 C++ 的价值如何。我发现这篇文章http://en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B 解决了我的大部分问题。但是还是有一些我不明白的地方。
1) 在 Java 中,有一种方法可以强制垃圾收集器立即清理(这并不总是有用,因为它会在运行前等待一些垃圾堆积起来)。有没有办法用 C++ 做到这一点?
2) (C++) 同样与上述相反,我怎样才能使我将对象置于“标记为删除”的状态,并且程序决定何时清理它(如 Java)?
3) (C++)我应该强制垃圾收集器就地清理吗(我很确定这不是正确的方法,但我只是想确定一下)?
如果你能给出一个小代码示例,我会很感激它,其中代码触发了什么。
【问题讨论】:
-
C++ 不提供垃圾收集(您可以实现它,但它确实很麻烦,通常不需要)。它有RAII,这使得析构函数非常有用。
-
找一本书。 C++ 和 Java 在这方面的区别就像汽车和火车一样。
-
你读过你链接的文章吗? C++ 没有垃圾收集器。你的问题没有意义。
-
我第二次阅读一个好的introductory book。
-
Java 没有办法强制垃圾回收。当您调用
System.gc()时,它会告诉运行时这将是开始垃圾收集的好时机,但 GC 实际上会在未来不确定的时间在单独的线程上运行。
标签: java c++ garbage-collection