32位,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中。
另一个沙箱:作业 ---针对进程。
测试代码:
int iIntLen,iShortLen,iLongLen,iWordLen,iDWordLen,iDWord64Len;
iIntLen = sizeof(int);
iShortLen = sizeof(short);
iLongLen= sizeof(long);
iWordLen = sizeof(WORD);
iDWordLen = sizeof(DWORD);
iDWord64Len = sizeof(DWORD64);
CString str;
str.Format(_T("IntLen=%d,ShortLen=%d,LongLen=%d,WordLen=%d,DWordLen=%d,DWord64Len=%d"),iIntLen,iShortLen,iLongLen,iWordLen,iDWordLen,iDWord64Len);
MessageBox(str);
int iCharPLen,iIntPLen;
char * pChar = NULL;
int * pInt = NULL;
iCharPLen = sizeof(pChar);
iIntPLen = sizeof(pInt);
str.Format(_T("pChar = %d,pInt = %d"),iCharPLen,iIntPLen);
MessageBox(str);