Tel*_*ope 6 c++ pointers static-cast memory-address reinterpret-cast
我正在编写一个 C++ 标记指针。我有一个问题,我用来实现其基本功能的操作是否会导致未定义的行为:
T*,我reinterpret_cast将指针指向 a uintptr_t。这允许我对内存地址执行按位操作,这是添加/提取/检查标签所必需的。reinterpret_cast转换uintptr_t为 a void*(删除标签后)。如果需要指向特定类型的指针,我会将其接受 (void*假设确实是标记指针中保存的类型)。static_castT*T因此,总而言之,我正在对 a 执行以下转换T*:
reinterpret_cast荷兰国际集团T*到auintptr_treinterpret_cast将其uintptr_t转为 a void*,并可能static_cast将其void*转回 a T*。这是否会导致未定义的行为?此外,我是否在预期的用例中正确使用了reinterpret_cast和?static_cast