静态转换伪造的 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
类型的对象; 它的值不是正确对齐的地址。