64 位架构内存地址是否仍保留 1 个字节

Do 64 Bit architectures memory addresses still hold 1 byte

在32位机器上,如果你复制一个int p,它会复制4个字节的信息,分别在0xbeefbeef、0xbeefbef0、0xbeefbef1、0xbeefbef2寻址。

这与 64 位相同吗?还是在单个地址存储 2 个字节?

在 amd64 架构(也称为 x86_64 和 x64,这是最常见的 64 位架构)上,每个可寻址单元仍然指一个字节的内存(8 位)。

此外,int 通常仍包含 4 个字节的内存(32 位),尽管这个 可以 因编译器而异(因为它在32 位系统)。

不同的是指针的大小。在 32 位系统上,指针通常是 32 位的,但在 64 位系统上是 64 位的(8 字节)。这将允许计算机访问 更多 字节的内存,但每个字节仍然是 8 位长。

这取决于体系结构。在大多数 "normal" 64 位系统(例如 arm64、x86_64 等)上,内存是“byte addressed”,因此每个内存地址指的是 一个 字节(因此它与您的 32 位示例相同)。

有些系统不是 字节寻址,这可能包括 64 位架构。例如,DSPs 是一个典型的系统示例,其中 char 可以是 32 位(或更多)并且单个字节(或者更确切地说,八位字节)不可寻址。