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

标签 c memory 32bit-64bit

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

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

最佳答案

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

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

关于c - 64 位架构内存地址是否仍保留 1 个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43600956/

相关文章:

从函数返回值比较 C 中的宏

c++ - 自动存储时长的具体要求是什么?

c++ - 将一个数组的内容复制到另一个数组会导致内存泄漏吗

c - 64 位值的字节序表示

html - 浏览器将C服务器发送过来的图像文件显示为一长串字符

java - 通过 JNI 在 C 中创建的 JVM 不起作用

c++ - 使用静态指针来管理类内存?

linux - 64 位的程序可以在 32 位机器上运行吗?

c - 自定义 Sqlite 函数在 32 位和 64 位系统上的行为不同

c - 找到 size_t 最大值的可移植方法是什么?