第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

結(jié)構(gòu)填料和包裝

結(jié)構(gòu)填料和包裝

C C++
偶然的你 2019-05-29 17:26:05
結(jié)構(gòu)填料和包裝考慮:struct mystruct_A{    char a;    int b;    char c;} x;struct mystruct_B{    int b;    char a;} y;結(jié)構(gòu)的尺寸分別為12和8。這些結(jié)構(gòu)是填充還是包裝?什么時(shí)候進(jìn)行填充或包裝?
查看完整描述

3 回答

?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊

我知道這個(gè)問(wèn)題很老,這里的大多數(shù)答案都很好地解釋了填充,但是在我自己試圖理解它時(shí),我覺(jué)得有一個(gè)“視覺(jué)”形象正在發(fā)生的事情有所幫助。

處理器以確定大?。ㄗ郑┑摹皦K”讀取存儲(chǔ)器。假設(shè)處理器字長(zhǎng)8個(gè)字節(jié)。它會(huì)將內(nèi)存視為8字節(jié)構(gòu)建塊的大行。每當(dāng)它需要從內(nèi)存中獲取一些信息時(shí),它將到達(dá)其中一個(gè)塊并獲得它。


如上圖所示,Char(長(zhǎng)度為1個(gè)字節(jié))的位置無(wú)關(guān)緊要,因?yàn)樗挥谄渲幸粋€(gè)塊內(nèi)部,要求CPU只處理1個(gè)字。

當(dāng)我們處理大于一個(gè)字節(jié)的數(shù)據(jù)時(shí),如4字節(jié)的int或8字節(jié)的雙字節(jié),它們?cè)趦?nèi)存中的對(duì)齊方式會(huì)對(duì)CPU必須處理的字?jǐn)?shù)產(chǎn)生影響。如果4字節(jié)塊以某種方式對(duì)齊,它們總是適合塊的內(nèi)部(存儲(chǔ)器地址是4的倍數(shù)),則只需要處理一個(gè)字。否則,一個(gè)4字節(jié)的塊可能在一個(gè)塊上有一部分,而在另一個(gè)塊上有一部分,要求處理器處理2個(gè)字以讀取該數(shù)據(jù)。

這同樣適用于8字節(jié)的雙精度數(shù),除非它現(xiàn)在必須在8的存儲(chǔ)器地址中,以保證它總是在一個(gè)塊內(nèi)。

這考慮了一個(gè)8字節(jié)的字處理器,但這個(gè)概念適用于其他大小的字。

填充通過(guò)填充這些數(shù)據(jù)之間的間隙來(lái)確保它們與這些塊對(duì)齊,從而在讀取內(nèi)存時(shí)提高性能。

然而,正如其他人所說(shuō)的那樣,有時(shí)候空間比表演本身更重要。也許你在沒(méi)有太多RAM的計(jì)算機(jī)上處理大量數(shù)據(jù)(可以使用交換空間,但速度要慢得多)。您可以在程序中安排變量,直到填充最少(因?yàn)樗谄渌恍┐鸢钢械玫搅撕芎玫睦C),但如果這還不夠,您可以明確禁用填充,這就是打包。


查看完整回答
反對(duì) 回復(fù) 2019-05-29
  • 3 回答
  • 0 關(guān)注
  • 564 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)