void* value is converted to a pointer to object type,
T*, but is not properly aligned for
T, the resulting pointer value is unspecified. Example:
// 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);
The value of
p3 is unspecified because
p2 cannot point to an object of type
int; its value is not a properly aligned address.