垃圾引用和悬空引用有什么区别?

2024-02-18

垃圾引用和悬空引用有什么区别?


悬空引用是对不再存在的对象的引用。垃圾是无法通过引用到达的对象。

垃圾收集语言中不存在悬空引用,因为对象仅在不再可访问时才会被回收(仅收集垃圾)。在某些语言或框架中,您可以使用“弱引用”,它可以悬空,因为在收集过程中不会考虑它们。

在具有手动内存管理的语言中,例如 C 或 C++,您可能会遇到悬空pointers,例如这样做:

int * p = new int;
delete p;

int i = *p; // error, p has been deleted!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

垃圾引用和悬空引用有什么区别? 的相关文章

  • 索引数组时应该始终使用 size_t 吗?

    我需要使用吗size t总是在索引数组时即使数组没有大到超过 int 的大小 这不是我应该什么时候使用的问题size t 我只想知道 例如 一个程序是否具有 2GB 可用内存 所有这些字段都可以通过 int32 进行索引 但该内存 虚拟内存
  • iPhone应用程序NSNumber内存泄漏

    我遇到了内存泄漏 但我不知道它从哪里来以及如何修复它 在某些时候 我计算两个位置之间的距离 double calc self getDistance location to otherLocation NSNumber distance N
  • 每次加载解决方案时,所有项目引用都有黄色三角形

    我的所有项目 来自同一解决方案 引用都标有黄色三角形 这些项目都设置为相同的 NET 版本 4 5 1 错误日志说 无法引用项目 CommonLibrary 暂时解决该问题的方法是 删除并重新添加引用 右键单击并选择 添加服务引用 并立即取
  • 如何解决警告“没有明确的所有权”

    我有一种方法 它采用间接指针作为参数 然后 如果出现错误 将其设置为错误对象 我正在尝试打开尽可能多的警告 但其中之一 Implicit ownership types on out parameters 在此方法中生成警告 id doWi
  • 查找 Java 中的内存使用情况

    以下是我需要解决的场景 我想出了两种解决方案 我需要维护从数据库获取的数据的缓存 以便在 Swing GUI 上显示 每当我的 JVM 内存超过其分配内存的 70 时 我需要警告用户有关过度使用的情况 一旦 JVM 内存使用率超过 80 那
  • 作为属性的类引用

    谷歌对于这类搜索毫无用处 因为你会得到数亿个结果 其中没有一个与特定问题相关 问题很简单 Delphi 中是否可以有类引用属性 如果是这样 怎么办 这是我尝试过的 type TMyObject class end TMyObjectClas
  • 使用工厂方法设置 __weak 变量似乎会使对象存活时间过长

    我创建了一个 Person 类 在其中实例化了两个对象 int main int argc const char argv autoreleasepool Person weak pweak Person new Person p Pers
  • php中有指针吗?

    这段代码是什么意思 这就是你在 php 中声明指针的方式吗 this gt entryId entryId PHP 中的变量名称以 开头 因此 entryId 是变量的名称 this是PHP面向对象编程中的一个特殊变量 它是对当前对象的引用
  • 对 Qsort 和指针感到困惑

    我是一名 C 初学者程序员 想要习惯术语和指针 我在寻找对数值数组元素进行排序的方法时发现了以下工作函数原型 该函数是 qsort 它使用指针 现在我的理解是 const 一词确保值 a 和 b 不变 但指针不变 如果我在这里错了 请纠正我
  • 在 cudaFree() 之前需要 cudaDeviceSynchronize() 吗?

    CUDA 版本 10 1 帕斯卡 GPU 所有命令都发送到默认流 void ptr cudaMalloc ptr launch kernel lt lt lt gt gt gt ptr cudaDeviceSynchronize Is th
  • 指向数组的指针 int (*ptr)[]

    我想了解指向数组的指针如何工作 代码片段 include
  • 在 C/C++ 中使用单个初始化来初始化具有相同值的多个指针

    我想在 C C 中使用单个赋值运算符声明两个或多个具有相同值的指针 以下代码是一个示例 List a NULL List b NULL List c NULL 一行中是否有等效项 编辑 为了澄清 我正在寻找两种语言的答案 我使用 斜杠 来区
  • 字符串数组初始化

    这是另一个的延续question https stackoverflow com questions 7834294 string array conversion I have 考虑以下代码 char hi hello char arra
  • 如何初始化结构体指针数组?

    是否可以初始化结构体指针数组 就像是 struct country t countries United States of America America England Europe Ethiopia Africa 我想这样做是为了获取
  • 什么是 __ext_vector_type__ 和 simd?

    我正在使用 Apple Metal API 以及所谓的simd图书馆 标题中有这样的代码 typedef attribute ext vector type 3 float vector float3 我很好奇它实际上做了什么以及为什么编译
  • 静态方法是否会立即编译(JIT)?

    根据我的理解 CLR 编译器对实例方法和静态方法的处理方式相同 并且每当首次调用该方法时 IL 代码都会进行 JIT 编译 今天我和同事讨论了 他告诉我静态方法与实例方法的处理方式不同 即 静态方法在程序集加载到应用程序域后立即进行 JIT
  • 删除队列对象数组

    我正在研究一个包含数组的对象queues数组长度在调用构造函数之前才确定 基本上看起来像下面这样 include
  • 演员邮箱溢出。斯卡拉

    我目前正在与 scala 的两位演员合作 一 producer 产生一些数据并将其发送到parcer 生产者发送一个HashMap String HashMap Object List Int 通过消息 以及this标记发件人 parcer
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • 指向C中单链表指针的指针[重复]

    这个问题在这里已经有答案了 我有一个关于 C 中的单链表的问题 我用下面所示的代码创建了一个链表 include

随机推荐