
三月,你不能跳吗? >>> 
熟悉以下语句: #pragma pack(n). 编译器将对齐n个字节!常见的是8字节和4字节对齐. 当然,您也可以指定2个1字节对齐. 然后查看int,char和double在不同计算机系统中占用的字节数.

如果您什么都知道,接下来如何计算?让我们首先编写一个结构(我的环境默认为8字节对齐). struct struct1(.1)double a; //加倍8个字节. 2)int b; // int 4个字节. 3)字符c; // char 1个字节)s1;
1.a首先,占据8个字节. 不用说,2.b位于第二位,占4个字节,而3.c位于第三位,占1个字节. 好吧,该结构占用8 + 4 + 1个字节. . . . . 当然这是个玩笑. . .

好的,让我们记下以下书籍. 首先看一个. 双占8个字节没有问题. 实际上,无论哪一个首先占据相同的字节空间,都没有问题. 主坑是下一个;
让我们再次看b. 在看b之前,让我们看一下a,以免忘记它. 我们首先分配sizea = sizeof(double),然后将sizea与n(即包装中的n)进行比较,然后分配sizeb = sizeof(int),然后将sizeb和n的大小进行比较(即pack),取一个较小的值,即min(sizeb,n),首先将其分配给min1,下一步是将此min1与sizea进行比较,如果min1

看看c的末尾,最后一位与前一位几乎相同,主要是因为遇到了麻烦. 根据以前的方法,即使将字节数添加到最后一位,然后查看字节总数,也要临时分配d,然后比较max(sizeof(double),sizeof(int),sizeof(char) ))和n. 取值,然后取一个较小的值,将其分配给min2,d是有用的,请使用d + x,使(d + x)%min2 =0. 最后,结构的大小为d + x!
根据此方法,max(sizeof(double),sizeof(int),sizeof(char))= sizeof(double)= 8,n = 8,因此上述结构的大小为8 + 4 + 1 = 13; (13 + 3)%8 = 0;大小是13 + 3 = 16;

#pragma pack(8)struct struct7 {字符a1;诠释字符f;双c; char d;)s7;
再看一次,a1的大小为1个字节,总字节为1,e的大小为4个字节,e小于n = 8,所以min1 = 4,总字节为1+ (4-1)+ 4 = 8,f大小为1sizeof计算结构体大小,总字节为8 + 1,c大小为8,min2 = 8;总字节为8+(8-1)+ 8 = 24,d大小为1sizeof计算结构体大小,总字节为24 +1 =25. (25 + 7)%8 = 0;总字节数为25 + 7 = 32
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-157713-1.html
全国人民恭喜南方黑芝麻蛆子节节高
这是个无利不起早的国家
跑到浙江这些粗制滥造的工厂去