64ビットのubuntu Linuxでのメモリ割り当てについてお聞きしたいです。
次のコードがあります
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]) {
char buffer_one[8], buffer_two[8];
printf("Size of char: %u\n", sizeof(char));
printf("Buffer_two is at %p\n", buffer_two);
printf("Buffer_one is at %p\n", buffer_one);
}
実行すると、次の結果が表示されます
$ ./sizeofchar
Size of char: 1
Buffer_two is at 0x7fff98069910
Buffer_one is at 0x7fff98069900
私の質問は、char 型のサイズが 1 バイトであっても (ここで間違っている場合は修正してください) Buffer_two
、隣り合って割り当てられていると思いますが、メモリアドレスとメモリアドレスが 16 バイト離れて割り当てられるBuffer_one
のはなぜですか。Buffer_two
Buffer_one