內(nèi)存管理-內(nèi)存對齊

計(jì)算機(jī)內(nèi)存是以字節(jié)(Byte)為單位劃分的瘾敢,理論上CPU可以訪問任意編號(hào)的字節(jié)粤铭,但實(shí)際情況并非如此辫塌。

CPU 通過地址總線來訪問內(nèi)存览妖,一次能處理幾個(gè)字節(jié)的數(shù)據(jù),就命令地址總線讀取幾個(gè)字節(jié)的數(shù)據(jù)蔚叨。32 位的 CPU 一次可以處理4個(gè)字節(jié)的數(shù)據(jù)棺克,那么每次就從內(nèi)存讀取4個(gè)字節(jié)的數(shù)據(jù)症概;少了浪費(fèi)主頻,多了沒有用但荤。64位的處理器也是這個(gè)道理罗岖,每次讀取8個(gè)字節(jié)。

以32位的CPU為例腹躁,實(shí)際尋址的步長為4個(gè)字節(jié)桑包,也就是只對編號(hào)為 4 的倍數(shù)的內(nèi)存尋址,例如 0纺非、4哑了、8、12烧颖、1000 等弱左,而不會(huì)對編號(hào)為 1、3炕淮、11拆火、1001 的內(nèi)存尋址。如下圖所示:


內(nèi)存尋址示意圖.jpeg

這樣做可以以最快的速度尋址:不遺漏一個(gè)字節(jié)鳖悠,也不重復(fù)對一個(gè)字節(jié)尋址榜掌。

對于程序來說优妙,一個(gè)變量最好位于一個(gè)尋址步長的范圍內(nèi)乘综,這樣一次就可以讀取到變量的值;如果跨步長存儲(chǔ)套硼,就需要讀取兩次卡辰,然后再拼接數(shù)據(jù),效率顯然降低了邪意。

例如一個(gè) int 類型的數(shù)據(jù)在內(nèi)存中占據(jù)4個(gè)字節(jié)九妈,如果地址為 8,那么很好辦雾鬼,對編號(hào)為 8 的內(nèi)存尋址一次就可以萌朱。如果編號(hào)為 10,就比較麻煩策菜,CPU需要先對編號(hào)為 8 的內(nèi)存尋址晶疼,讀取4個(gè)字節(jié),得到該數(shù)據(jù)的前半部分又憨,然后再對編號(hào)為 12 的內(nèi)存尋址翠霍,讀取4個(gè)字節(jié),得到該數(shù)據(jù)的后半部分蠢莺,再將這兩部分拼接起來寒匙,才能取得數(shù)據(jù)的值。

將一個(gè)數(shù)據(jù)盡量放在一個(gè)步長之內(nèi)躏将,避免跨步長存儲(chǔ)锄弱,這稱為內(nèi)存對齊考蕾。在32位編譯模式下,默認(rèn)以4字節(jié)對齊会宪;在64位編譯模式下辕翰,默認(rèn)以8字節(jié)對齊。

關(guān)于Go語言的內(nèi)存對齊示例請看這里:
Go 內(nèi)存對齊-結(jié)構(gòu)體

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狈谊,一起剝皮案震驚了整個(gè)濱河市喜命,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌河劝,老刑警劉巖壁榕,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赎瞎,居然都是意外死亡牌里,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進(jìn)店門务甥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來牡辽,“玉大人,你說我怎么就攤上這事敞临√粒” “怎么了?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵挺尿,是天一觀的道長奏黑。 經(jīng)常有香客問我,道長编矾,這世上最難降的妖魔是什么熟史? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮窄俏,結(jié)果婚禮上蹂匹,老公的妹妹穿的比我還像新娘。我一直安慰自己凹蜈,他們只是感情好限寞,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著踪区,像睡著了一般昆烁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缎岗,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天静尼,我揣著相機(jī)與錄音,去河邊找鬼。 笑死鼠渺,一個(gè)胖子當(dāng)著我的面吹牛鸭巴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拦盹,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼鹃祖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了普舆?” 一聲冷哼從身側(cè)響起恬口,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沼侣,沒想到半個(gè)月后祖能,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛾洛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年养铸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轧膘。...
    茶點(diǎn)故事閱讀 40,503評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡钞螟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谎碍,到底是詐尸還是另有隱情鳞滨,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布椿浓,位于F島的核電站太援,受9級特大地震影響闽晦,放射性物質(zhì)發(fā)生泄漏扳碍。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一仙蛉、第九天 我趴在偏房一處隱蔽的房頂上張望笋敞。 院中可真熱鬧,春花似錦荠瘪、人聲如沸夯巷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趁餐。三九已至,卻和暖如春篮绰,著一層夾襖步出監(jiān)牢的瞬間后雷,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留臀突,地道東北人勉抓。 一個(gè)月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像候学,于是被迫代替她去往敵國和親藕筋。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容

  • CPU Cache 今天的CPU比25年前更復(fù)雜梳码。那時(shí)候隐圾,CPU內(nèi)核的頻率與內(nèi)存總線的頻率相當(dāng)。內(nèi)存訪問只比寄存器...
    blueshadow閱讀 2,999評論 0 5
  • 1. 基礎(chǔ)知識(shí) 1.1掰茶、 基本概念翎承、 功能 馮諾伊曼體系結(jié)構(gòu)1、計(jì)算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2符匾、順序執(zhí)...
    yunpiao閱讀 5,332評論 1 22
  • why對齊叨咖? 為了提高尋址效率。計(jì)算機(jī)內(nèi)存是以字節(jié)(Byte)為單位劃分的啊胶,理論上CPU可以訪問任意編號(hào)的字節(jié)甸各,但...
    傾世無涯閱讀 554評論 0 0
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,947評論 2 89
  • 這本書東叔給了我們很大的自想象空間,以至于我總傷心不解怎么就這樣結(jié)尾了呢焰坪? 書整體似乎都是通過每章碎片式的拼接而成...
    休只閱讀 1,056評論 0 2