隨着硬件的不斷降價,我們的計算機內存也越來越大。而我們經常使用的Windows操作系統大都是32位的,4G內存成爲一個瓶頸問題。作爲軟件開發愛好者,如何在64位系統下做程序設計成爲了日程中的話題。下面我根據程序在不同平臺下的運行情況,總結了一下C/C++常用數據類型所佔的內存空間。
Win64, 也就是X64編譯配置下:
char:1字節;
short:2字節;
int:4字節;
long:4字節;
long long:8字節;
float:4字節;
double:8字節;
long double:8字節;
wchar_t:2字節;
bool:1字節;
char*:8字節;
bool*:8字節;
short*:8字節;
int*:8字節;
long*:8字節;
long long*:8字節;
float*:8字節;
double*:8字節;
long double*:8字節;
wchar_t*:8字節;
下面是Win32, 也就是X86編譯配置下變量所佔字節數:
char:1字節;
short:2字節;
int:4字節;
long:4字節;
longlong:8字節;
float:4字節;
double:8字節;
long double:8字節;
wchar_t:2字節;
bool:1字節;
char*:4字節;
bool*:4字節;
short*:4字節;
int*:4字節;
long*:4字節;
long long*:4字節;
float*:4字節;
double*:4字節;
long double*:4字節;
wchar_t*:4字節;
總結:經上述比較,一般變量在X86和X64系統下長度沒什麼區別,區別在於指針的尋址範圍從32位增加到了64位。如果考慮對64位系統下程序的兼容性,指針是唯一需要注意的地方。從32位系統過渡到64位系統不同於從16位系統過渡到32位系統,因爲DOS系統下int只有2個字節,而Windows系統下int是4個字節,過渡到64位系統後int的字節數沒有增加。如果使用 Windows系統編程,支持64位需要Visual Studio 2005/2008均可,而早期版本是不支持64位平臺的。
---------------------------------------------------------------------------------------------------------------------------------------------
其實就是隻有指針是8字節的,因爲要檢索64位地址,其他和32位上一模一樣,從直覺上來說,過度應該會很平滑。只是,32位的程序無法檢索超過32位的地址空間,而64位的可以--不知道這樣的簡單的理解是否可以。
原文地址:http://hi.baidu.com/__zhuanxin/blog/item/bdcb6f2458eb317a35a80f48.html