#pragma pack的作用

来源:互联网 发布:01年nba总决赛数据 编辑:程序博客网 时间:2024/05/01 16:17

#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(),取消自定义字节对齐方式。

原创粉丝点击