sizeof 与 32bit & 64 bit

最近总是遇到关于 CPU字节对齐的问题。


#pragma pack(push) //保存对齐状态

#pragma pack(4)//设定为4字节对齐
struct test
{
char m1; =》sizeof( test ) = 16
double m4;
int m3;
};

#pragma pack(pop)//恢复对齐状态



#pragma pack(push) //保存对齐状态
#pragma pack(8)//设定为4字节对齐
struct MyStruct
{ //对齐为 >= 8 时, sizeod(MyStruct) =  24
char dda;
double dda1;
int type; 
};
#pragma pack(pop)//恢复对齐状态


以下顺便附上 32 bit 与 64 bit 不同变量的存储大小。

机器平台:X86_64 处理器

操作系统:Red Hat 4.1.2-14

编译器: gcc version 4.1.2 20070626

 

 

Size of char is:                                   1

Size of unsigned char is:                     1

Size of signed char is:                  1

 

 

Size of int is:                                    4

Size of short is:                                2

Size of long is:                                  8

Size of long int is:                             8

Size of signed int is:                           4

Size of unsigned int is:                       4

Size of unsigned long int is:                8

Size of long long int is:                       8

Size of unsigned long long is:              8

 

 

 

Size of float is:                    4

 

Size of double is:                 8

 

Size of long double is:          16

 

 

 

Size of (void *) is:           8

Size of (char *) is:           8

Size of (int *) is:             8

Size of (long *) is:           8

Size of (long long *) is:   8

Size of (float *) is:          8

Size of (double *) is:              8

 

 

——————————————————————————

 

 

 

机器平台: X86_32 处理器

操作系统:  Windows XP SP2

编译器:    VS2005自带的C++编译器

 

 

Size of char is:                            1

Size of unsigned char is:              1

Size of signed char is:           1

 

 

 

Size of int is:                       4

Size of short is:                    2

Size of long is:                     4

Size of long int is:                4

Size of signed int is:             4

Size of unsigned int is:          4

Size of unsigned long int is:         4

Size of long long int is:                8

Size of unsigned long long is:       8

 

 

 

Size of float is:                    4

Size of double is:                 8

Size of long double is:          8

 

 

 

Size of (void *) is:          4    

Size of (char *) is:          4

Size of (int *) is:             4

Size of (long *) is:          4

Size of (long long *) is:   4

Size of (float *) is:          4

Size of (double *) is 4


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值