zoukankan      html  css  js  c++  java
  • [C++关键字] alignof & alignas 内存对齐 sizeof 占内存大小

    直接上代码测试是入门神器,以结构体为例,解释“对齐”和“补齐”概念。

    #include <iostream>
    struct Empty {};
    struct Foo {
        int f2;
        double f1;
        char c;
    };
    struct alignas(16) FooNew
    {
        int f2;
        double f1;
        char c;
    };
    
    int main()
    {
        std::cout << "alignment of empty class: " << alignof(Empty) << '
    '
        << "alignment of pointer : "    << alignof(int*)  << '
    '
        << "alignment of char : "       << alignof(char)  << '
    '
        << "alignment of Foo : "        << alignof(Foo)   << '
    '
        << "Size of Foo: " << sizeof(Foo) << '
    '
        << "alignment of FooNew : "        << alignof(FooNew)   << '
    ';
    }

    输出结果是:

    alignment of empty class: 1
    alignment of pointer : 8
    alignment of char : 1
    alignment of Foo : 8
    Size of Foo: 24
    alignment of FooNew : 16

    总之,对齐是某种类型的初始位置在内存上的限定,补齐是对该类型大小的限定,两者共同组成了该类型在内存上的排布规则,提高操作效率。

  • 相关阅读:
    一个菜鸟把Vue项目打包为APP的道路
    echarts
    no module named selenium
    git使用教程
    JDK安装与环境变量配置
    家具摆件
    家店分会场
    双十一电器城
    室内门锁
    http://cjy.suda.edu.cn/File.aspx?id=427
  • 原文地址:https://www.cnblogs.com/littletail/p/5274349.html
Copyright © 2011-2022 走看看