假设我有一个有效的指针p0
:
T a[10];
T* p0 = &a[0];
我知道我可以像这样安全地往返投射它:
reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p0)) == p0;
但是执行以下操作是否安全?
T* p1 = reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p0) + sizeof(T));
即我可以确定没有UBp1 == &a[1]
吗?
假设我有一个有效的指针p0
:
T a[10];
T* p0 = &a[0];
我知道我可以像这样安全地往返投射它:
reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p0)) == p0;
但是执行以下操作是否安全?
T* p1 = reinterpret_cast<T*>(reinterpret_cast<uintptr_t>(p0) + sizeof(T));
即我可以确定没有UBp1 == &a[1]
吗?