问题描述
将指针转换为原始指针(不带标签)。
-
指针和原始指针有什么区别?
Stack Overflow raw-pointer标签没有说“智能”或“共享”,这同样是个谜。
解决方法
-
crossbeam_epoch::Shared
是智能指针。也就是说,一个指针加上额外的东西。在C ++或Rust中,智能指针是用于指针包装的术语,它会添加以下任意内容:- 所有权信息
- 终身信息
- 将多余的数据打包到未使用的位
- 写时复制行为
- 引用计数
在这种情况下, raw 指针只是包装的指针,没有所有多余的东西。
-
crossbeam_epoch::Shared
适合(除其他外)上面的“在未使用的位中打包额外的数据”类别。现代计算机中的大多数数据都是对齐的,即地址是2的幂的倍数。这意味着地址的所有低位始终为0。人们可以利用这一事实在指针中存储一些额外的信息位。此特定的库将这些额外的数据称为tag,但是该术语并不像原始指针常见。