pointers - crossbeam_epoch::Shared::as_raw由 “Converts the pointer to a raw pointer (without the tag)”表示什么?

标签 pointers rust garbage-collection raw-pointer crossbeam

有人可以将this转换成对我有意义的东西:

Converts the pointer to a raw pointer (without the tag).


  • 指针和原始指针有什么区别?
    堆栈溢出raw-pointer标签既没有说“智能”也没有说“共享”,这再次是令人迷惑的。
  • Crossbeam的Shared::as_raw的“标签”到底是什么?
  • 最佳答案

  • crossbeam_epoch::Shared是一个智能指针。也就是说,一个指针加上额外的东西。在C++或Rust中,智能指针是用于指针包装的术语,它会添加以下任何内容:
  • 所有权信息
  • 生命周期信息
  • 将多余的数据打包在未使用的位中
  • 写入时复制行为
  • 引用计数

  • 在这种情况下,原始指针只是包装的指针,没有所有额外的东西。
  • crossbeam_epoch::Shared适合(其中包括)上面的“将多余的数据打包在未使用的位中”类别。现代计算机中的大多数数据都是对齐的,即地址是2的幂的倍数。这意味着地址的所有低位始终为0。人们可以利用这一事实在指针中存储一些额外的信息位。
    这个特定的库将这些额外的数据称为tag,但是该术语并不像原始指针那样普遍。
  • 关于pointers - crossbeam_epoch::Shared::as_raw由 “Converts the pointer to a raw pointer (without the tag)”表示什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63549744/

    相关文章:

    rust - 如何在 Fn 特征绑定(bind)返回引用上定义生命周期?

    java - 您如何在 Java 中正确设置要进行 GC 的线程?

    c# - ConditionalWeakTable<TKey, TValue> 是否应该用于非编译器目的?

    c++ - 指向数组的指针和指向数组第一个元素的指针之间的区别

    c++ - "new Classname*[]"是什么意思?

    datetime - 如何将 chrono DateTime 设置为特定日期和时间?

    rust - 无法理解 Rust 通用函数错误

    Java input = ""与 input = null 不同吗?

    c++ - 将文本转换为数组

    c++ - 安全派生指针值的示例