der*_*vel 3 c++ java garbage-collection
到目前为止,我一直在用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++)我应该强迫垃圾收集器在现场清理(我很确定这不是正确的方式,但我要求确定)?
如果你能给出一个代码触发器的小代码示例,我会赞美它.
1)如果您的对象处于自动存储中,您可以限制其范围:
{
X x;
//...
} //x gets destructed here
Run Code Online (Sandbox Code Playgroud)
如果在动态存储中,则在完成后删除它们:
X* x = new X;
//...
delete x; //x gets destructed
Run Code Online (Sandbox Code Playgroud)
2)你不能(至少以干净的方式).您必须指示C++何时删除对象,即使该指令包含结束括号.(请参阅第一个代码段)
3)C++中没有垃圾收集器.看两个片段.您必须显式删除对象(如果在动态存储中),或者如果在自动存储中,它们将被自动删除(但不会被垃圾收集器删除).
值得研究的是智能指针(那里有大量的实现),但这也不是垃圾收集器.它只是为您节省了管理内存的麻烦.但它与Java无异.
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |