Holy cow, I wrote a book!
/Zp8
In words, integral types and pointers up to eight bytes in size are stored at their natural alignment. Larger types are stored at eight-byte alignment.
BYTE
char
UCHAR
WORD
WCHAR
short
USHORT
DWORD
int
long
UINT
ULONG
float
QWORD
__int64
unsigned __int64
double
In other words (saying it a third time), let T be an integral or pointer type. If sizeof(T) ≤ 8, then T is aligned at a sizeof(T)-byte boundary. If sizeof(T) ≥ 8, then T is aligned at an 8-byte boundary.
T
sizeof(T)