The _item_t structure is 64-bit aligned on 64-bit architectures, whereas
the allocated structures might very well be 32-bit aligned if, for
instance, they only hold integer values. This patch ensures that we
round up the size to a multiple of the natural alignment of the item
structure, thus ensuring that two consecutive items are properly
aligned.
Unaligned access to non-packed structures is undefined behavior.
On Intel processors, unaligned access can result in those accesses
being much slower than normal. On some other architectures, it could
simply crash the program :-).
Caveat: technically, the stdalign.h headers are part of C11
The _item_t structure is 64-bit aligned on 64-bit architectures, whereas the allocated structures might very well be 32-bit aligned if, for instance, they only hold integer values. This patch ensures that we round up the size to a multiple of the natural alignment of the item structure, thus ensuring that two consecutive items are properly aligned.
Unaligned access to non-packed structures is undefined behavior. On Intel processors, unaligned access can result in those accesses being much slower than normal. On some other architectures, it could simply crash the program :-).
Caveat: technically, the stdalign.h headers are part of C11