64 位的優(yōu)點(diǎn):64 位的應(yīng)用程序可以直接訪問 4EB 的內(nèi)存和文件大小大達(dá)到4 EB(2 的 63 次冪);可以訪問大型數(shù)據(jù)庫。本文介紹的是64位下C語言開發(fā)程序注意事項(xiàng)。
成都創(chuàng)新互聯(lián)公司主營武邑網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),武邑h5小程序制作搭建,武邑網(wǎng)站營銷推廣歡迎武邑等地區(qū)企業(yè)咨詢1. 32 位和 64 位C數(shù)據(jù)類型
32和64位C語言內(nèi)置數(shù)據(jù)類型,如下表所示:
上表中第一行的大寫字母和數(shù)字含義如下所示:
I表示:int類型
L表示:long類型
P表示:pointer指針類型
32表示:32位系統(tǒng)
64表示64位系統(tǒng)
如:LP64表示,在64位系統(tǒng)下的long類型和pointer類型長度為64位。
64位Linux 使用了 LP64 標(biāo)準(zhǔn),即:long類型和pointer類型長度為64位,其他類型的長度和32位系統(tǒng)下相同類型的長度相同,32位和64位下類型的長度比較見上圖的藍(lán)色部分。
下圖為在32和64位linux系統(tǒng)下使用sizeof檢測出的數(shù)據(jù)類型的長度。
32位平臺(tái)下結(jié)果:
64位平臺(tái)下結(jié)果:
主流都是64位了。所以都按照64位的來。
sizeof對齊問題。
1,如果class或struct里面有基本類型數(shù)組,則數(shù)組應(yīng)該按照結(jié)構(gòu)體對齊值的倍數(shù)對齊。
而結(jié)構(gòu)體對齊值應(yīng)該是基本變量的大值,這里是int, 即4. ///4+4 struct SZ { char c[2]; int a; }; ///2+2+4=8 struct SZ2 { char c[2]; short b; int a; }; ///4+4+4=12 struct SZ3 { char c[2]; int a; short b; }; ///4+4+4=12 struct SZ4 { char c[6]; int a; };
結(jié)果:
sizeof of SZ:8
sizeof of SZ2:8
sizeof of SZ3:12
sizeof of SZ4:12
又這里基本類型大是long,按8對齊。
///align8 8*2+8=24 struct SZ { long c[2]; int a; }; ///align8 8*2+8=24 struct SZ2 { long c[2]; short b; int a; }; ///align8 8+2*8+8+8=40 struct SZ3 { char c[2]; long a[2]; int b; int i; short s; }; ///align8 48+8=56 struct SZ4 { long c[6]; int a; };
sizeof of long:8
sizeof of SZ:24
sizeof of SZ2:24
sizeof of SZ3:40
sizeof of SZ4:56
2,如果class或struct里面有其他自定義類型。 如果基本類型跟的是其他類型,則直接拼接,即使超過對齊數(shù)
對齊值是基本類型的大值。
struct THREE { char a[3]; }; ///align1 3+1=4 struct SZ { THREE t; char a; }; ///align8 8*2+8=24 struct SZ2 { long c[2]; THREE b; int a; }; ///align4 1+3 +4 +4 =12 struct SZ3 { char c; THREE t; int i; short s; }; ///如果基本類型下一個(gè)是其他類型,則直接拼接不用對齊。 /// align4 not 4+4+4+4=16 //err ///align4 should be: 2+2 +1+2+1(null) +4 =12 struct SZ4 { char c[2]; THREE t; short s; int a; }; ///align4 2+2 +1+1+2(null) +4=12 struct SZ5 { char c[2]; THREE t; char s; int a; }; ///align4 2+2 +1+3(null) +4*2 =16 struct SZ6 { char c[2]; THREE t; int s; int a; }; //sizeof of THREE:3 //sizeof of SZ:4 //sizeof of SZ2:24 //sizeof of SZ3:12 //sizeof of SZ4:12 //sizeof of SZ5:12 //sizeof of SZ6:16
3,如果結(jié)構(gòu)體里面有其他類型的數(shù)組,則:
大對齊值是大的基本類型
如果后面跟的是其他類型數(shù)組,直接拼接,即使超了。 如果后面跟的是基本類型,未超可以拼接。超了要補(bǔ)空對齊。
struct THREE { char a[3]; }; ///align1 6+1=7 struct SZ { THREE t[2]; char a; }; ///align8 8*2+8+8=32 struct SZ2 { long c[2]; THREE b[2]; int a; }; ///align4 1+6+1(null)+4+4=16 struct SZ3 { char c; THREE t[2]; int i; short s; }; ///如果基本類型下一個(gè)是其他類型,則直接拼接。 ///align4 should be: 2+6 +4 +4 =16 struct SZ4 { char c[2]; THREE t[2]; short s; int a; }; ///align8 8+ 3+6+1+4+2(null) =24 struct SZ5 { long l; char c[3]; THREE t[2]; char s; int a; }; ///align8 8+6+2(null) +4+4(null) =24 struct SZ6 { long l; THREE t[2]; int s; }; //sizeof of THREE:3 //sizeof of SZ:7 //sizeof of SZ2:32 //sizeof of SZ3:16 //sizeof of SZ4:16 //sizeof of SZ5:24 //sizeof of SZ6:24
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章名稱:結(jié)構(gòu)體嵌套對齊-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://muchs.cn/article0/cddoio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作、網(wǎng)站導(dǎo)航、建站公司、云服務(wù)器、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
移動(dòng)網(wǎng)站建設(shè)知識(shí)