zoukankan      html  css  js  c++  java
  • (四)c语言之字节对齐方式

    // 对齐原则:每一成员需对齐为后一成员类型的倍数

    // 补齐原则:最终大小补齐为成员类型最大值的倍数
    #include <iostream>
    #include <memory>
    #include <string>
    using namespace std;
    
    // 空类,考虑的是当我们声明该类型的实例时候,它必须在内存中
    // 有一定的空间,否则就是不存在的,导致无法使用这些实例
    class A
    {
            A() {};
    };
    
    // 虚函数的大小为4 字节对齐
    class B
    {
            B() {};
            virtual void func() {};
    };
    
    /* 4字节
    int     4       4
    short   2       4+2=6   6不是下一个字节4的倍数,6+2=8
    int     4       8+4=12  12是下一个字节1的倍数
    char    1       12+1=13 13补齐为4的倍数
    */
    struct C
    {
            int a;
            short b;
            int c;
            char d;
    };
    
    /* 4字节
    int     4       4        是下一个字节1的倍数
    short   2       4+2=6    是下一个字节1的倍数
    char    1       6+1=7    不是下一个字节4的倍数 7+1=8
    int     4       8+4=12   是4的倍数
    */
    struct D
    {
            int a;
            short b;
            char c;
            int d;
    };
    int main()
    {
            cout<<"class:  "<<sizeof(A)<<endl;
            cout<<"class:  "<<sizeof(B)<<endl;
            cout<<"struct:  "<<sizeof(C)<<endl;
            cout<<"struct:  "<<sizeof(D)<<endl;
            return 0;
    }
     
    做一个优秀的程序媛
  • 相关阅读:
    BZOJ 1057 悬线法求最大01矩阵
    POJ 2248
    SPOJ
    51NOD
    2017-2018 ACM-ICPC, NEERC, Moscow Subregional Contest J. Judging the Trick
    POJ 1379 模拟退火
    POJ 2420 模拟退火
    Frontend 事后诸葛亮
    【Frontend】Alpha Review 展示博客
    ASE19 团队项目 alpha 阶段 Frontend 组 scrum5 记录
  • 原文地址:https://www.cnblogs.com/oytt/p/13677757.html
Copyright © 2011-2022 走看看