If a 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.