【发布时间】:2012-09-16 20:50:19
【问题描述】:
对不起,如果这个问题听起来很愚蠢。我只是模糊地意识到数据对齐的问题,从未做过任何 64 位编程。我现在正在处理一些 32 位 x86 代码。它经常访问一个 int 数组。有时会读取一个 32 位整数。有时会读取两个或多个。在某些时候,我想将代码设为 64 位。我不确定是否应该将此 int 数组声明为 int 或 long int。我宁愿保持整数的宽度相同,所以我不必担心差异。我有点担心,虽然读/写与自然词不一致的地址可能会很慢。
【问题讨论】:
-
如果你想要固定宽度的整数试试:
int32_tin<stdint.h> -
int是架构的自然类型。除非你有充分的理由使用不同的类型,否则不要。 -
@PeteBecker 不,不是。
int在今天的大多数系统上仍然只有 32 位。 -
AFAIK 访问由 4 对齐但不是 8 对齐的 dword 不会受到惩罚。
-
@Mysticial - 来自 C++ 标准:“普通整数具有执行环境架构所建议的自然大小”。如果“今天的大多数系统”不这样做,那么系统设计就会出现严重问题。 (但请注意,“系统”没有定义整数大小;编译器会定义)。