認識位元組對齊之前,假定int(4byte),char(1byte),short(2byte)
先看段**:
struct data1
;struct data2
;int main()
輸出結果:
128
sizeof(data1)和sizeof(data2)分別表示data1和data2記憶體占用位元組數,輸出結果不一樣是因為編譯時對data1和data2做了不同的位元組對齊。data1的對齊為4byte,data2的對齊是2byte。
結構體或類中的每個成員都是記憶體對齊的。
編碼時可以使用#pragma pack(x)來指定位元組對齊大小,x必須為2的n次方,否則設定的位元組對齊大小不生效。如上段**開頭加上#pragma pack(4),輸出結果均為12。
記憶體對齊目的:為了讓cpu一次性獲得基本型別的資料,從而提公升程式執行效率。
iOS高階底層原理 runtime
runtime 是ios的執行時,用於實現ios載入和呼叫屬性和方法。函式中load方法沒有使用runtime機制,是底層直接呼叫的函式。load執行順序是由編譯時的檔案順序相同,先編譯的先執行load,類優先於分類的順序呼叫 load方法。initialize initialize方法是在類或類的...
SparkSQL底層執行的原理詳解 面試必備
檢視執行計畫 explain 簡介 spark sql的核心是catalyst優化器,它以一種新穎的方式利用高階程式語言功能 例如scala的模式匹配和quasiquotes 來構建可擴充套件的查詢優化器 sparksql的catalyst優化器是整個sparksql pipeline的中間核心部分...
HashMap底層原理
1.hashmap概述 hashmap是基於雜湊表的map介面的非同步實現。此實現提供所有可選的對映操作,並允許使用null值和null鍵。此類不保證對映的順序,特別是它不保證該順序恆久不變。2.hashmap的資料結構 注意,迭代器的快速失敗行為不能得到保證,一般來說,存在非同步的併發修改時,不可...