__attribute__((aligned(16))) とかを使う
1: main() 2: { 3: int a; 4: char b; 5: char c[13] __attribute__((aligned(16))); 6: char d[13]; 7: char e[13]; 8: 9: printf("&a = %08X\n",&a); 10: printf("&b = %08X\n",&b); 11: printf("&c = %08X\n",&c); 12: printf("&d = %08X\n",&d); 13: printf("&e = %08X\n",&e); 14: }
$ ./a.out
&a = FFA095DC ←intとかはもともとその境界に沿う様になってる
&b = FFA095DB ←奇数
&c = FFA095C0 ←指定したので16バイト境界に沿ってる
&d = FFA095B3 ←奇数
&e = FFA095A6
スタック内で変数が確保される順番は、割りと適当