-1

我知道 C++ 有析构函数,Java/C# 有垃圾收集器,但是内存取消分配有什么区别?

4

3 回答 3

7

C++ 具有确定性解除分配,Java 和 C# 没有。

大多数其他一切都是实现定义的。

于 2012-05-02T04:47:22.147 回答
3

在 C++ 中,堆内存释放是手动的,这与 C#/Java 中定期发生的自动垃圾收集不同。

使用智能指针,您也可以在 C++ 中模拟垃圾收集的效果,但在幕后必须有人编写调用delete()/free()函数的代码。

C++ 还提供了在非动态分配的堆栈内存上创建对象,但它也不需要任何内存管理。

于 2012-05-02T04:50:09.753 回答
0

PLlikeC#/Java支持garbage collection技术,也称为automatic memory management在控制流超出范围时自动释放内存的技术。PL如果支持garbage collection技术,程序员不需要专注于释放内存。

PL就像C/C++支持manual memory management程序员控制内存的地方一样。C++提供使用 new 和 delete 运算符分配和释放内存的方法

于 2012-05-02T05:19:47.453 回答