我想问一下 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
并且Buffer_one
彼此相邻分配,为什么内存地址Buffer_two
和Buffer_one
内存地址分开分配 16 个字节。