不同的平台上对不同数据类型分配的字节数是不同的,而平台是由处理器,操作系统及编译器才能决定的。
类型 | 32位编译器 | 64位编译器 |
char | 1个字节 | 1个字节 |
char* | 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节 | 8个字节(同理64位编译器) |
short int | 2个字节 | 2个字节 |
int | 4个字节 | 4个字节 |
unsigned int | 4个字节 | 4个字节 |
float | 4个字节 | 4个字节 |
double | 8个字节 | 8个字节 |
long | 8个字节 | 4个字节 |
long long | 8个字节 | 8个字节 |
unsigned long | 4个字节 | 8个字节 |
结构体是一种复合数据类型,通常编译器会自动的进行其成员变量的对齐,已提高数据存取的效率。在默认情况下,编译器为结构体的成员按照自然对齐(natural alignment)条方式分配存储空间,各个成员按照其声明顺序在存储器中顺序存储。自然对齐是指按照结构体中成员size最大的对齐,在cl编译器下可以使用这个函数来指定结构体的对齐方式。
#pragma pack(n)