发布于 2020-08-23 17:16:11
crossbeam_epoch::Shared是一个智能指针。也就是说,一个指针加上额外的东西。在C++或Rust中,智能指针是用于指针包装器的术语,它添加了以下任何内容:- Ownership information
- Lifetime information
- Packing extra data in unused bits
- Copy-on-write behavior
- Reference counting在这种情况下,原始指针只是包装的指针,没有所有额外的东西。
crossbeam_epoch::Shared符合(除其他外)“在未使用比特中打包额外数据”的类别。现代计算机中的大多数数据都是对齐的,也就是说,地址是两个幂的倍数。这意味着所有低位的地址总是0。人们可以利用这个事实在指针中存储一些额外的信息。
这个额外的数据由这个特定的库称为https://docs.rs/crossbeam-epoch/0.8.2/crossbeam_epoch/struct.Shared.html#method.with_tag,但是这个术语并不像原始指针那么常见。https://stackoverflow.com/questions/63549744
复制相似问题