32位和64位各变量字节数

数据类型编译配置
X86X64
char1字符1字符
short2字符2字符
int4字符4字符
long4字符4字符
longlong8字符8字符
float4字符4字符
double8字符8字符
long double8字符8字符
wchar_t2字符2字符
bool1字符1字符
 
char*4字符8字符
bool*4字符8字符
short*4字符8字符
int*4字符8字符
long*4字符8字符
long long*4字符8字符
float*4字符8字符
double*4字符8字符
long double*4字符8字符
wchar_t*4字符8字符

总结:经上述比较,一般变量在X86和X64系统下长度没什么区别,区别在于 指针的 寻址范围从32位增加到了64位。如果考虑对64位系统下程序的兼容性,指针是唯一需要注意的地方。从32位系统过渡到64位系统不同于从16位系统过渡 到32位系统,因为DOS系统下int只有2个字节,而Windows系统下int是4个字节,过渡到64位系统后int的字节数没有增加。如果使用 Windows系统编程,支持64位需要Visual Studio 2005/2008/2010/2012均可,而早期版本是不支持64位平台的。
2位,64位会有下面4种情况。(CPU现在一般都是64位的 了)

32位系统,32位编译:int --4字节  DWORD64 -- 8字节    指针 -- 4字节
32位系统,64位编译(程序不能运行)
64位系统,32位编译:int --4字节  DWORD64 -- 8字节    指针 -- 4字节
64位系统,64位编译:int --4字节  DWORD64 -- 8字节    指针 -- 8字节
1 字节 = 8 bit  32位,64位都一样。

另外补充两个概念:

地址空间沙箱:进程可用的地址空间限制在最底部的2GB中。

另一个沙箱:作业 ---针对进程。

测试代码:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. int iIntLen,iShortLen,iLongLen,iWordLen,iDWordLen,iDWord64Len;  
  2.     iIntLen = sizeof(int);  
  3.     iShortLen = sizeof(short);  
  4.     iLongLensizeof(long);  
  5.     iWordLen = sizeof(WORD);  
  6.     iDWordLen = sizeof(DWORD);  
  7.     iDWord64Len = sizeof(DWORD64);  
  8.     CString str;  
  9.     str.Format(_T("IntLen=%d,ShortLen=%d,LongLen=%d,WordLen=%d,DWordLen=%d,DWord64Len=%d"),iIntLen,iShortLen,iLongLen,iWordLen,iDWordLen,iDWord64Len);  
  10.     MessageBox(str);  
  11.     int iCharPLen,iIntPLen;  
  12.     char * pChar = NULL;  
  13.     int * pInt = NULL;  
  14.     iCharPLen = sizeof(pChar);  
  15.     iIntPLen = sizeof(pInt);  
  16.     str.Format(_T("pChar = %d,pInt = %d"),iCharPLen,iIntPLen);  
  17.     MessageBox(str);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yueliang2100

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值