0x10
is a multiple of four. It's a hexadecimal number equal to 16 in decimal which, last I looked into the matter, was equal to 4x4
. I'm old but I'm pretty sure maths hasn't changed that much since I went to school :-)
In any case, things on the stack aren't required to be aligned on a four-byte boundary. Alignment may speed up certain operations, but:
- it isn't a mandatory thing on the x86 platforms (on some platforms, accessing misaligned data causes a fault to be raised); and
- alignment tends to match the argument size (such as a two-byte value "needing" two-byte alignment).