结构体大小求值
內存對齊概念,struct例子:
struct stu{
??char a;
?? intb;
??char c;
??double d;
??char e;
}
取pack(n),n,取結構體中最大成員大小m,取兩個小值k, k = m< n?m:n;
取每個成員大小p,依次同k比較,取小值q = k< p?k:p;
第二步當中依次取得的值,即為內對齊標準,所謂的對齊,即此處的地址可被q整除。
K值可作為外部對齊補0的依據。
?
當有數組的時候拆散了當普通變量存儲。
?
下面開始計算結構體中的大小
取k值。(取pack(4))
經分析,元素中占空間最大的是double類型的,其占8個字節。所以k =? 8 < 4 ? 8:4;所以k = 4;
2、取每個成員大小p依次同k比較,取值q = k<p?k:p;
驗證:
從圖中可以知,和上面的理論是一致的。
總結
- 上一篇: 1、打印二进制机器码,程序内存分析,大端
- 下一篇: C语言二分查找法(指针和数组实现)