垃圾和悬挂参考有什么区别?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了垃圾和悬挂参考有什么区别?相关的知识,希望对你有一定的参考价值。
垃圾和悬挂参考有什么区别?
答案
悬空引用是对不再存在的对象的引用。垃圾是无法通过引用访问的对象。
垃圾收集语言中不存在悬空引用,因为只有在不再可访问对象时才回收对象(仅收集垃圾)。在某些语言或框架中,您可以使用“弱引用”,由于在收集过程中不考虑它们,因此可以保留悬空。
在具有手动内存管理的语言(如C或C ++)中,您可以遇到悬空指针,例如:
int * p = new int;
delete p;
int i = *p; // error, p has been deleted!
另一答案
悬空引用是对不再存在的对象的引用。
什么被认为是垃圾取决于您的垃圾收集器的实现。
使用跟踪和引用计数GC时,不能存在悬空引用(除非存在GC实现错误),因为只有那些元素被认为有资格进行没有引用的垃圾回收。
因此,悬挂引用几乎只适用于具有手动内存管理的系统。
另一答案
悬空参考:引用最初分配的内存地址,但现在已取消分配
int x= 1000; //creates a new
memory block
int* p = x; // *p is the pointer to address block 1000(mem location)
int *p = 20;
printf("%d",*p); //This pointer prints 20
delete p;
printf("%d",*p); // This would throw an error, because now p is
// inaccessible or dangling. *p is a dangling pointer.
垃圾:已在堆上分配但尚未显式解除分配的内存,但程序无法访问。 Java有一个垃圾收集器。它及时删除悬空指针和其他垃圾记忆。
以上是关于垃圾和悬挂参考有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章