i guess, because of allocated on stack: import std.stdio; align(16) struct S { align(16) int a; } S sGlobal; void main() { S sLocal; writefln("0x%08X 0x%08X", cast(uint) &sGlobal, cast(uint) &sLocal); } 0x00162110 0x0012FE14 but, IMHO, this is not good