假设sizeof(int)和sizeof(double)分别为 4 和 8,并且在以下代码或编译器选项之前没有预处理器命令,如#pragma pack,与编译器命令行中使用的#pragma pack功能相同
typedef struct
{
int n;
double d;
} T;
那么sizeof(T)是多少?
我认为这取决于 CPU 和 RAM 之间的数据总线的宽度。如果宽度为 32 位,则 sizeof(T) 为 12。如果宽度为 64 位,则 sizeof(T) 为 16。在具有 32 位数据总线的计算机上,将 64 位数字从 CPU 传输到 RAM反之亦然,CPU 必须访问数据总线两次,一次读取或写入 32 位,因此将结构体T的成员d存储在8 的倍数的地址是没有意义的。
你同意吗?
(对不起我的英语不好)