C++内存对齐

2018-08-26 17:15:29来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

大家都用过struct,但是很少有人考虑过内存的问题,如果数据量很大那么内存对齐就很重要了

1、看个例子

struct person
{
    QString str;
    int height;
    long long ll;
    double dd;
    QString str2;
};

int main()
{
    qDebug() << sizeof(person);
}
输出结果:32

2、修改struct

#pragma pack(1)
struct person
{
    QString str;
    int height;
    long long ll;
    double dd;
    QString str2;
};

int main()
{
  qDebug() << sizeof(person);
}
输出结果:28

3、添加了#pragma pack(n)后规则就变成了下面这样:

     1、 偏移量要是n和当前变量大小中较小值的整数倍

     2、 整体大小要是n和最大变量大小中较小值的整数倍

     3、 n值必须为1,2,4,8…,为其他值时就按照默认的分配规则

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:C++系统学习之七:类

下一篇:C++ 子类继承父类纯虚函数、虚函数和普通函数的区别