我知道 C++ 有析构函数,Java/C# 有垃圾收集器,但是内存取消分配有什么区别?
问问题
381 次
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
PL
likeC#/Java
支持garbage collection
技术,也称为automatic memory management
在控制流超出范围时自动释放内存的技术。PL
如果支持garbage collection
技术,程序员不需要专注于释放内存。
但PL
就像C/C++
支持manual memory management
程序员控制内存的地方一样。C++
提供使用 new 和 delete 运算符分配和释放内存的方法
于 2012-05-02T05:19:47.453 回答