各变量字节数
Win64, 也就是X64編譯配置下:
char????????? ? ? ? 1字節(jié);
short????????? ? ?? 2字節(jié);
int?????????????????? 4字節(jié);
long?????????????? 4字節(jié);
long long?????? 8字節(jié);
float?????????????? 4字節(jié);
double??????? ?? 8字節(jié);
long double?? 8字節(jié);
wchar_t???????? 2字節(jié);
bool????????????? 1字節(jié);
(指針都是8字節(jié))
char*??????????? 8字節(jié);
bool*??????????? 8字節(jié);
short*????????? 8字節(jié);
int*????????????? 8字節(jié);
long*?????????? 8字節(jié);
long long*?? 8字節(jié);
float*?????????? 8字節(jié);
double*?????? 8字節(jié);
long double*?? 8字節(jié);
wchar_t*????? 8字節(jié);
?
下面是Win32, 也就是X86編譯配置下變量所占字節(jié)數(shù)
char????????? 1字節(jié);
short???????? 2字節(jié);
int ?4字節(jié);
long 4字節(jié);
longlong 8字節(jié);
float 4字節(jié);
double 8字節(jié);
long double????? 8字節(jié);
wchar_t 2字節(jié);
bool 1字節(jié);
?(指針都是4字節(jié))
char* 4字節(jié);
bool* 4字節(jié);
short* 4字節(jié);
int*??????????????? 4字節(jié);
long* 4字節(jié);
long long* 4字節(jié);
float* 4字節(jié);
double* 4字節(jié);
long double* 4字節(jié);
wchar_t* 4字節(jié);
其他類型:
enum類型聲明不占內(nèi)存。
???? ? eg. enum Color { Red, Black }; 不占內(nèi)存。
????? enum變量定義占int型內(nèi)存。Win32下是占4B。
????? eg. Color clr; 占sizeof(int)
struct的成員對(duì)齊問題:
對(duì)于結(jié)構(gòu)體,編譯器會(huì)自動(dòng)進(jìn)行成員對(duì)齊以提高運(yùn)算效率。缺省情況下,編譯器會(huì)為結(jié)構(gòu)體的每個(gè)成員按其自然對(duì)界(按結(jié)構(gòu)體中的成員中size最大的成員對(duì)齊)條件分配空間,每個(gè)成員按照他們被聲明的順序在內(nèi)存中順序存儲(chǔ)。
聯(lián)合體(union)的結(jié)構(gòu)體空間要足夠大,要等于最長(zhǎng)的一個(gè)結(jié)構(gòu)體 變量的空間,但是這個(gè)最長(zhǎng)的空間要滿足以下條件:
1.要大于等于最長(zhǎng)一個(gè)結(jié)構(gòu)變量的空間
2.并且要能夠整除其他結(jié)構(gòu)變量的數(shù)據(jù)長(zhǎng)度(長(zhǎng)度要是元類型長(zhǎng)度的最小公倍數(shù))。
總結(jié):經(jīng)上述比較,一般變量在X86和X64系統(tǒng)下長(zhǎng)度沒什么區(qū)別,區(qū)別在于指針的 尋址范圍從32位增加到了64位。如果考慮對(duì)64位系統(tǒng)下程序的兼容性,指針是唯一需要注意的地方。從32位系統(tǒng)過渡到64位系統(tǒng)不同于從16位系統(tǒng)過渡 到32位系統(tǒng),因?yàn)镈OS系統(tǒng)下int只有2個(gè)字節(jié),而Windows系統(tǒng)下int是4個(gè)字節(jié),過渡到64位系統(tǒng)后int的字節(jié)數(shù)沒有增加。如果使用 Windows系統(tǒng)編程,支持64位需要Visual Studio 2005/2008均可,而早期版本是不支持64位平臺(tái)的。
轉(zhuǎn)載于:https://www.cnblogs.com/junglefish/p/5464100.html
總結(jié)
- 上一篇: 关于ubuntu 14.04 dpkg
- 下一篇: java配置JDK