字节真的是最小可寻址单位吗?

sqr*_*163 2 c c++ standards memory-model language-lawyer

C11 标准的第 3.6 节将“字节”定义为“数据存储的可寻址单元......以保存......字符”。

C++11 标准的第 1.7 节将“字节”定义为“C++ 内存模型中的基本存储单元……包含……字符”。

这两个定义都没有说“字节”是最小的可寻址单位。这是因为标准有意从特定机器中抽象出来吗?您能否提供一个真实的机器示例,其中 C/C++ 编译器决定“字节”长/短于最小可寻址单元?

Eri*_*hil 7

字节是严格符合 C 代码的最小可寻址单元。C 实现执行程序的机器是否支持寻址更小的单元与此无关;C 实现必须提出这样一种观点,即字节是严格符合 C 代码的最小可寻址单位。

AC 实现可能支持寻址更小的单元作为扩展,例如简单地定义某些指针操作的结果,否则 C 标准未定义。