将指针用作索引是否安全?

时间:2015-02-20 02:35:20

标签: c++ pointers c++11 unique-index

关于为对象生成唯一索引ID的主题,我考虑使用其指针的数值作为ID。由于它们始终保持独特性,因此可以省去产生唯一数字的麻烦,而不必担心重叠。

基本上:

typedef uintptr_t T_Index;

T_Index getIndex()
{
    return (T_Index)this;
}

我的问题是,这会安全吗?或指针地址可能以某种方式改变?显然,移动操作会使索引无效,但如果移动构造和移动分配被禁用,它会安全吗?


这个问题类似: How bad is to use integer pointers as unique ids? C++11,但该问题的范围非常模糊。那里的大多数人似乎主要关注性能等等,并且OP表示他的对象永远不会被破坏(在我的情况下几乎肯定会发生)。我的问题不是关于性能,而是关于基于指针的唯一索引是否可以安全地用于不可移动的对象。


次要主题:显然,指针不适用于多个进程或多台计算机。虽然我想可能仍然有一个进程/计算机处理索引(你可能应该,但无论如何)并且可能根据需要附加进程/计算机/ IP /端口ID。

0 个答案:

没有答案