c++11--内存对齐

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). 设置的对齐值必须大于等于默认对齐值。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
课程目标本课程详细讲解了C++的所有关键字,包括C++11和C++20新增的关键字和语言特性适用人群本课程并非零基础,适合有C语言基础,尤其是学过嵌入式linux核心课程的《C语言高级专题》的同学。课程简介《跟朱老师从C高级到征服C++》属于系列课程《朱有鹏老师热门编程语言全解》的第一部分,主要针对C++语言完全学习。本课程可以看做是嵌入式linux核心课程中《C语言高级专题》课程的延续,在学好了C语言前提下继续深度学习C++语言。整个课程共分为5部分。涵盖了C++基础语法和使用,面向对象,STL与泛型,Boost库和设计模式,C++编程优化技巧等非常广泛的内容,是市面上非常缺少的深度完整学习C++,培养编程技能和修养的一套系列学习课程。整个课程预计2020年底前录制完成,总时长预计150-200小时。朱老师C++第1部分-从C到C++朱老师C++第2部分-C++和面向对象朱老师C++第3部分-STL等高阶话题朱老师C++第4部分-Boost库和设计模式朱老师C++第5部分-C++编程优化课程特色*完全零基础,降低学习门槛。*深入浅出,通俗易懂。不怕学不会,就怕你不学习。*思路清晰、语言风趣,对着视频看也不会想睡觉······*视频 + 文档 + 练习题 + 答疑,全方位保证学习质量。*基础知识 + 思路引导的教学方式,授之以鱼更授之以渔。*系列课程。本教程只是入门篇,后续还有更多更精彩视频更新中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

raindayinrain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值