sizeof位元組計算

2021-09-25 17:36:30 字數 498 閱讀 2710

1

#pragma pack(2)

2classbu3

ubuf;

10void

foo(){}

11 typedef char*(*f)(void*);

12enum

disk;

13 }bu;

求sizeof(bu)的值

#pragma pack(2)

class bu

ubuf; // union的大小取決於它所有的成員中,占用空間最大的乙個成員的大小,並且需要記憶體對齊,加#pragma pack(2)是以2位元組對齊,不加【因為與sizeof(int)=4對齊】,所以是16

void foo(){} //0

typedef char*(*f)(void*); //0

enumdisk; // 3對齊之後是4

}bu;

因此sizeof(bu) = 4+14 +0 +0 +4 = 22

sizeof 和位元組計算 的愛恨情仇

在學習中經常遇到 byte的處理 甚至關於bit的處理,還有涉及到結構體強制轉化,分析位元組占用記憶體的問題,每次分析重頭再來,耗費時間,於是將 位元組的大小 整理歸納 用法 sizeof 型別說明符,陣列名或表示式 sizeof 變數名 64bit 作業系統 sizeof 計算 intmain i...

sizeof 位元組對齊

怎麼判斷記憶體對齊規則,sizeof的結果怎麼來的,要牢記以下3條原則 在沒有 pragma pack巨集的情況下,看最後一行 資料成員對齊規則 結構 struct 或聯合 union 的資料成員,第乙個資料成員放在offset為0的地方,以後每個資料成員儲存的起始位置要從該成員大小或者成員的子成員...

sizeof計算結構體大小(位元組對齊)

引言 sizeof計算結構體的大小經常出現在筆試題中,接下來是對它的一些總結 pragma pack 8 struct s1 struct s2 求sizeof s2 的值?32位機 解 1.先看s1,a的有效對齊值為min 2,8 2,偏移量為0,0 2 0,符合 b的有效對齊值為min 4,8 ...