【发布时间】:2020-09-30 08:59:38
【问题描述】:
我以为地址是 4 个字节大,为什么这个地址是 6 个字节?
我正在使用 Ubuntu 20.04 的虚拟机上使用 gcc 进行编译,如果这很重要,我有一个 x64 处理器。
#include <stdio.h>
int main() {
char char_array[3] = {'a', 'b', 'c'};
printf("Address of char_array: %p\n", char_array);
}
$ gcc -g test.c
$ ./a.out
Address of char_array: 0x7ffc0ff83645
【问题讨论】:
-
在 64 位计算机上地址是否为 4 个字节?
-
4 个字节只有 32 位。您现在处于 64 位世界!
-
地址是8字节(因为是64位的电脑/程序),但是高2字节是0,仅此而已。
-
6 个字节(显然)由于前导 0 抑制。
-
@FredLarson:哈哈——摩托罗拉 68000 的回声,它有一个 24 位地址总线。有进取心的 Macintosh 程序员通常会将数据填充到这 8 个未使用的位中,以充分利用宝贵的 128KB RAM。在 68020 推出之前一直运行良好,它具有 32 位地址总线,所有代码都必须重写。
标签: c memory-address