能力值:
( LV2,RANK:10 )
|
-
-
2 楼
VC6默认的结构体 对齐是8字节 所以 要8的倍数
|
能力值:
( LV5,RANK:60 )
|
-
-
3 楼
1。Win32平台下的微软C编译器(cl.exe for 80x86)在默认情况下采用如下的对齐规则: 任何基本数据类型T的对齐模数就是T的大小,即sizeof(T)。
根据这条规则,他们总是取最大对其,就sizeof(double) = 8
2.VC的默认对齐选项就相当于/Zp8,即八字节对其
你可以强制对其即:
#pragma pack(4)
struct xx
{
double a;
char b;
};
#pragma pack(pop)
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢楼上的回答。但是不太清楚为什么要这么做。按4的倍数对齐可以理解,在读这个数的时候只要访问一次内存就可以,但是为什么要按8的倍数来对齐?难道用的可以放8个字节的寄存器?或者别的什么原因?
谢谢啦!
|
|
|