sizeof常見情況
#include#include#includeusing namespace std;
stucta;
stuctb;
int main();
ss1是乙個字元指標,指標的大小是乙個定值,就是4位元組,所以答案為4;
ss2是乙個字元陣列,但是未定義大小,所以預設陣列有\0,所以是11位元組;
ss3也是乙個字元陣列,但是規定了大小,所以就是100位元組;
ss4是乙個整型陣列,這個陣列規定了大小,整型變數佔4位元組,所佔空間是4*100位元組,400位元組;
q1和ss2類似,所以4位元組;
q2有"\n",算一位(\0),所以是3位元組;
q3是整形指標,指標的大小是個定值,所以是4位元組;
a b是兩個結構體。
a是三個short整型,各自2位元組對齊,sizeof(a)為6.
b中a1雖然為short型別2要與下方的long型別對齊所以為四位元組,a2為四位元組,a3和a1一樣需要和記憶體對齊,所以最後為12位元組。
str1和str2都是指標,所以都是4位元組。
資料對齊
資料對齊是指資料所在的記憶體位址必須是該資料長度的整數倍。dword資料的記憶體位址能被4除盡,word資料的記憶體起始位址能被2除盡。dword:2個位元組就是1個word(1個字,16位),dword(double word)就是雙字的意思,兩個字(32位)。x86cpu能直接訪問乙個對齊的資料,當他訪問乙個未對齊的資料時,會在內部進行一部分的調整。
這些調整對於程式來說是透明的,但是會降低執行速度,所以編譯器在編譯程式時會盡量保證資料對齊。
靜態變數對sizeof的影響
我們先來看這樣乙個例子
#includeusing namespace std;
class a
int main()
;class a2
;class b :public a
;class c :public virtual b
;class d :publica ,public a2;
int main(int argc,char *ar** )
{ cout<<"sizeof(a):"以上答案是1,1,4,1,。這說明空類所佔的空間為1.單一繼承的空類空間也為1,多重繼承的空類空間也為1.但是虛繼承涉及虛表(虛指標),所以sizeof(c)的大小為4.
總結 關於Sizeof的相關知識
sizeof的使用場合 sizeof操作符的乙個主要用途是與儲存分配和i o系統那樣的例程進行通訊 用它可以看看某種型別的物件在記憶體中所佔的單元位元組 在動態分配一物件時,可以讓系統知道要分配多少記憶體 便於一些型別的擴充。由於運算元的位元組數在實現時可能出現變化,建議在涉及運算元位元組大小時用s...
cros 相關的知識總結
一般來說可以有兩種資料鏈的形式,一種是rtk插卡進行上網,設定連線cros。進行接收差分資料進行定位輸出。第二種是,使用手機網路 可以使用手機的tcp連線 ntrip協議進行拿資料然後通過藍芽 給rtk。再進行解算輸出 詳情請見 android 使用ntrip協議,socket連線獲取接入點,登入模...
引用相關知識總結
1.什麼是 引用 申明和使用 引用 要注意哪些問題?答 引用就是某個目標變數的 別名 alias 對應用的操作與對變數直接操作效果完全相同。申明乙個引用的時候,切記要對其進行初始化。引用宣告完畢後,相當於目標變數名有兩個名稱,即該目標原名稱和引用名,不能再把該引用名作為其他變數名的別名。宣告乙個引用...