32位系統和64位系統變量所佔空間總結 .

隨着硬件的不斷降價,我們的計算機內存也越來越大。而我們經常使用的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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章