静态转换伪造的 void 值

如果将 void*值转换为指向对象类型的指针 T*,但未正确对齐 T,则未指定结果指针值。例:

// Suppose that alignof(int) is 4
int x = 42;
void* p1 = &x;
// Do some pointer arithmetic...
void* p2 = static_cast<char*>(p1) + 2;
int* p3 = static_cast<int*>(p2);

p3 的值未指定,因为 p2 不能指向 int 类型的对象; 它的值不是正确对齐的地址。