crossbeam_epoch::Shared::as_raw 和 "Converts the pointer to a raw pointer (without the tag)" 是什么意思?

What does crossbeam_epoch::Shared::as_raw mean by "Converts the pointer to a raw pointer (without the tag)"?

有人可以将 this 翻译成对我来说有意义的东西吗:

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

  1. 指针和原始指针有什么区别?

    Stack Overflow raw-pointer 标签既没有说“智能”也没有说“共享”,这又是一个谜。

  2. Crossbeam Shared::as_raw 的“标签”是什么?

  • crossbeam_epoch::Shared 是一个 智能指针 。也就是说,一个指针加上额外的东西。在 C++ 或 Rust 中,智能指针 是用于指针包装器的术语,它添加了以下任何一项:

    • 所有权信息
    • 生命周期信息
    • 在未使用的位中打包额外数据
    • Copy-on-write 行为
    • 引用计数

    在这种情况下,原始 指针只是包装指针,没有所有额外的东西。

  • crossbeam_epoch::Shared 适合(除其他外)上面的“在未使用的位中打包额外数据”类别。现代计算机中的大多数数据都是对齐的,也就是说,地址是 2 的某个幂的倍数。这意味着地址的所有低位始终为 0。可以利用这一事实在指针中存储一些额外的信息位。

    此特定库调用此额外数据 tag,但该术语不像 原始指针.

    那样常见