【发布时间】:2021-04-13 20:17:44
【问题描述】:
我读了 K&R C(2nd) 185p,其中一部分很难理解。
虽然机器各不相同,但对于每台机器来说,都有一个最严格的类型:如果最严格的类型可以存储在特定地址,那么所有其他类型也可能是。在某些机器上,限制最大的类型是 double;对于其他人,int 或 long 就足够了。
我认为
大多数现代计算机都是字节可寻址的(通过 wiki)。最小的数据类型 char 足以容纳任何堆栈区域。因此,所有数据类型都足以满足任意堆栈位置。但是为什么会有这样的限制呢?
在this类似的问题中,
CPU 通常要求(或者如果)将某些类型的数据存储在某个(2 的幂)值的倍数的地址中,则可以更有效地工作。
这解释了我的问题。但我无法理解。这是否意味着堆栈中某些 2 的幂(2、4、8、16、...、1024、2048、...)的地址需要某些类型?
如果是这样,为什么?或者如果我错了,它指的是什么?
【问题讨论】:
标签: c architecture malloc memory-alignment