#pragma pack
当#pragma pack指定的值等于或者超过所有数据成员长度的时候,这个指定值的大小将不产生任何效果;
一句话:
如果是1的话表示紧凑存放,除了char,bool,每个都要访问2次才能找到。。。。
越大,那么,占的空间越大,访问越快。。。。。
如果为8.。那么至少为8字节的大小。或者8的整数倍。。。
访问频繁的结构体,那么请设置大一点的值。。
访问不频繁的,而或者数据量超大的(影响了速度),,请设为1。。。。。。。
//1 表示要内存。。而更大的数值表示。。需要时间。。
数值越大,,,,,访问速度越快。。。。。。。。。。
反之。。。。。。。。。
首先按照 n划分为块。。。。。。。。。
然后一个一个往里填。。。。。。。。
如果小于这个块,那么就按照自身的方式对其。。。。
如果大于这个快,这个块。。。。。就起作用啦。。。。。。。。。
例如:
如果为1,那么表示。。。。。。。。。。1一个字节一个字节的对其。。便宜为1个字节的整数倍就行了。。
需要访问2次才能找到成员
如果很大,那么就按照默认的对其方式。。也就是自身大小。。sizeOf()..对其它的成员。。。。。
只需要1次
原因:
为什么要对齐?
为什么要边界对齐?
方便查找?
快速定位?
可能是这个原因???
当成数组。。。。。。。。。。。。来处理。。。。。。。。。。。
访问成员的时候可以快速定位??????
为什么用11111.。。。。。。。。。。或者88888888888
8的话占用更多的内存。。。采用默认对其。
1的话意思是不对其。。。。。。。。。。。。
不对其显然的好处是节省内存。。。。。。。。。
但是降低访问速度。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
它的作用是说:
默认的对其方式是自身大小。。
如果自身比pack之中的数据大,那么按照pack来对其。。而不按照自身来对其;
如果自身小,按照自身对其。。默认是8
8已经很大了。所以大部分都按照自己大小对其的。
如果设为1,是什么情况呢?
也就是说 。。。。。。。。。不对其!!!!!!!!!!
按照1字节对齐。。。。。。。。。。。。
1 2 4 8 16
等对其方式。。
不对其有什么好处么?
哈哈。。。。。。。。。。。。。。
节省内存啊。。。。。。。。。。
如果是字节数都是偶数
5,
内存个数为:
取所用过的所有对齐参数中最大的那个值的整数倍,
因为对齐参数都是2的n次方;这样在处理数组时可以保证每一项都边界对齐;
使用#pragma pack(n),指定c编译器按照n个字节对齐;
使用#pragma pack(),取消自定义字节对齐方式。