c++11--内存对齐

发布时间:2024年01月06日

1.内存对齐
1.1.c++里内存对齐要求指的是,对类型字段,要求字段的起始地址可被字段尺寸整除。

#include <iostream>
using namespace std;

struct /*alignas(16)*/ ColorVector{
    char r;
    double g;
    double b;
    double a;
};

int main(){
    cout << "alignof(ColorVector): " << alignof(ColorVector) << "  " << alignof(ColorVector::r) << "  "
        << alignof(ColorVector::g) << endl;
    return 1;
}

在这里插入图片描述

上述类型内字段存在对齐要求,相应的类型整体起始地址也需要满足对齐要求,才能使得类型内各个字段满足对齐要求。
1.2.c++11支持显示对齐,设置对齐

#include <iostream>
using namespace std;

struct alignas(16) ColorVector{
    char r;
    double g;
    double b;
    double a;
};

int main(){
    cout << "alignof(ColorVector): " << alignof(ColorVector) << "  " << alignof(ColorVector::r) << "  "
        << alignof(ColorVector::g) << endl;
    return 1;
}

在这里插入图片描述
注意点:
(1). 设置的对齐值需是2的次方。
(2). 设置的对齐值必须大于等于默认对齐值。

文章来源:https://blog.csdn.net/x13262608581/article/details/135421317
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。