2010-12-10 104 views

回答

13

Java的版本mallocnew - 它创建一个指定类型的新对象。

在Java中,内存是为您管理的,因此您无法明确地使用deletefree对象。

+0

所以我不能直接访问内存空间? – java 2010-12-10 01:50:53

+0

不,您无法通过任何理智的方式获得对Java对象的底层指针/内存地址的访问。 C#允许您使用`unsafe`关键字执行此操作: http://msdn.microsoft.com/en-us/library/chfa2zb8(v=VS.100)。aspx 请注意,这是非常非常少的必要。 – ClosureCowboy 2010-12-10 01:52:09

0

new而不是malloc垃圾回收器,而不是免费的。

4

Java有一个垃圾收集器。这就是为什么你永远也看不到你的代码语句(这是很好的,如果你问我)

在计算机科学中,垃圾收集 (GC)是自动的 内存管理的一种形式。这是一种特殊的资源管理案例,其中 被管理的有限资源是 内存。垃圾收集器或仅收集器尝试收回 垃圾,或由 程序不再使用的对象 占用的内存。垃圾收集是约翰·麦卡锡发明的约为1959年 发明的 来解决Lisp中的问题。

3

没有直接对应Java中存在:

Çmalloc创建一个类型化的堆节点,并返回一个指向它允许,但是你想你访问内存。

Java不具有无类型对象的概念,也不允许直接访问内存。在Java中最接近malloc的将是new byte[size],但是它会返回一个强类型对象,您只能将其用作字节数组。

C free释放一个堆节点。

Java不允许您显式释放对象。 Java中的对象释放完全掌握在垃圾回收器的手中。在某些情况下,您可以影响GC的行为;例如通过将null分配给参考变量并调用System.gc()。但是,这不会强制对象被释放......并且是一种非常昂贵的方式。

3

如果你没有好(tm),我想你可以通过JNI接口访问原始内存。这是您可以从Java程序调用C程序的地方。当然,你必须在你的程序有权这样做的环境中运行(浏览器通常不允许这种情况,除非它是自杀的),但你可以通过C指针访问对象。

我有点奇怪原来的问题来自何处。很久以前,我完全怀疑C型内存管理和C型指针是不需要的,但在这一点上我是真正的信徒。

相关问题